You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Expo EAS Build构建Android应用始终以SDK 34为目标,已在app.json设置targetSdkVersion为35仍不生效

Expo EAS Build构建Android应用始终以SDK 34为目标,已在app.json设置targetSdkVersion为35仍不生效

我之前在使用Expo SDK 52搭配EAS Build时,也碰到过类似的SDK版本不生效的问题,结合你的配置和报错信息,给你几个针对性的排查和解决步骤:

一、补全EAS Build的Android SDK版本显式配置

你当前仅在app.json里设置了compileSdkVersiontargetSdkVersion,但对于EAS Build来说,尤其是开启了New Architecture(你已经设置newArchEnabled: true)的场景,仅靠app.json的配置可能优先级不足,推荐用以下两种方式补全配置:

方案1:在eas.json中给各构建profile显式指定SDK版本

修改你的eas.json,在development、preview、production的Android配置中,直接添加SDK版本声明:

"build": {
  "development": {
    "developmentClient": true,
    "distribution": "internal",
    "android": {
      "compileSdkVersion": 35,
      "targetSdkVersion": 35
    }
  },
  "preview": {
    "distribution": "internal",
    "android": {
      "compileSdkVersion": 35,
      "targetSdkVersion": 35
    }
  },
  "production": {
    "autoIncrement": true,
    "android": {
      "buildType": "app-bundle",
      "compileSdkVersion": 35,
      "targetSdkVersion": 35
    }
  }
}

方案2:通过本地build.properties文件强制覆盖版本

在项目根目录创建android/build.properties文件(如果没有的话),添加以下内容:

android.compileSdkVersion=35
android.targetSdkVersion=35
android.buildToolsVersion=34.0.0

这个文件的配置优先级高于app.json,能直接让Gradle构建时使用指定的SDK版本,对New Architecture项目的适配性更好。

二、解决本地构建失败的独立问题

你提到的本地构建报错,是本地环境配置缺失导致的,和EAS Build的云端构建问题是两回事:

Failed to apply plugin 'com.facebook.react.rootproject'.
A problem occurred configuring project ':app'.
... set the sdk.dir path in your project's local properties file ...

解决方法很直接:

  • 如果你用的是本地Android开发环境,确保已经配置了ANDROID_HOME环境变量,指向你的Android SDK安装路径;
  • 或者在本地生成的android目录下,创建local.properties文件,添加sdk.dir=/你的Android SDK完整路径(比如Mac下是/Users/你的用户名/Library/Android/sdk,Windows下是C:\\Users\\你的用户名\\AppData\\Local\\Android\\Sdk)。

三、提前验证配置是否生效的小技巧

在提交EAS Build之前,可以先在本地生成原生项目文件验证配置:

  1. 运行npx expo prebuild --platform android(managed项目执行这个命令会生成原生目录,事后如果不需要可以直接删除);
  2. 打开android/app/build.gradle文件,检查compileSdktargetSdk的值是否已经变成35,如果这里配置正确,说明你的设置已经生效,再提交EAS Build就会使用指定的SDK版本了。

另外,你当前的EAS CLI和Expo CLI版本已经比较新,但可以再运行npm install -g eas-cli expo-cli升级到最新版,避免版本兼容带来的隐性问题。

内容来源于stack exchange

火山引擎 最新活动