Expo项目中如何升级Android Gradle Plugin(AGP)?
嘿,我之前在Expo项目里也碰到过这种AGP版本不生效的问题,结合你用的SDK 52的情况,给你梳理几个能解决问题的步骤:
首先,先确认你expo-build-properties的配置是不是真的对了——很多时候都是配置参数写错或者放错位置导致的。正确的app.json配置应该是这样的:
{ "expo": { "plugins": [ [ "expo-build-properties", { "android": { "gradlePluginVersion": "8.9.1", "gradleVersion": "8.10.2" } } ] ] } }
这里要划重点:AGP版本和Gradle版本是有严格对应关系的,你用的Gradle 8.10.2刚好匹配AGP 8.9.1,这个搭配是没问题的,别乱改版本导致不兼容。
然后,清理缓存绝对是解决这类构建问题的关键,Expo和Gradle的缓存经常会“记住”旧版本:
- 先清Expo的缓存:如果你的项目用了预构建,就跑
npx expo prebuild --clean;如果没预构建,就用npx expo start --clear - 再清Android本地的缓存:进入项目里的
android目录,先跑./gradlew clean,然后删掉.gradle文件夹(这个文件夹是本地缓存,删了之后下次构建会重新下载对应版本的依赖)
接下来,排查有没有第三方插件在搞事情——有些Expo插件会偷偷覆盖AGP版本,比如某些原生插件可能在自己的配置里硬编码了旧版AGP。你可以用npx expo doctor检查一下依赖冲突,或者去node_modules里看看那些插件的代码有没有修改build.gradle的逻辑。
如果你是用EAS Build来构建的,还要去检查eas.json里的构建配置,看看有没有在某个build profile里指定了旧的android.gradlePluginVersion,如果有的话改成8.9.1就行。
另外,记得把expo-build-properties更到最新版,旧版本可能对高版本AGP支持不好:
npm install expo-build-properties@latest
最后,验证一下AGP版本是不是真的生效了:构建的时候看日志,找有没有类似“Android Gradle Plugin version: 8.9.1”的输出;或者预构建之后去android/build.gradle里看dependencies块里的classpath com.android.tools.build:gradle版本是不是8.9.1。
备注:内容来源于stack exchange,提问作者Chinmay Dhumal

