执行expo eject后无法构建release版apk 仅生成debug版本问题求助
问题成因
- 残留Expo构建配置覆盖了release属性:Expo eject操作不会完全清理构建注入逻辑,要么在
android/app/build.gradle中残留expo-build-properties插件的强制配置,要么在gradle.properties中存在EXPO_DEBUG=true的全局变量,强制所有构建开启debug模式。 - 签名配置缺失导致构建降级:Expo eject后的项目如果未配置release签名,Gradle会自动降级使用debug签名构建,最终生成的安装包即使名称带release后缀,本质仍是debug版本。
- 项目根目录
react-native.config.js中残留Expo相关构建钩子,构建执行前强制修改了构建类型参数。
解决步骤
- 清理Expo残留全局调试配置
打开项目根目录android/gradle.properties文件,删除所有EXPO_DEBUG相关行,或将值修改为EXPO_DEBUG=false。 - 修正release构建配置
打开android/app/build.gradle文件,找到buildTypes.release代码块,确保配置符合以下要求:
buildTypes { release { debuggable false // 必须显式设置为false minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" // 移除所有Expo注入的debuggable覆盖逻辑 signingConfig signingConfigs.release // 已配置release签名时填写,临时测试构建类型可先填signingConfigs.debug,正式发布必须配置独立签名 } }
同时检查文件顶部的插件引入部分,删除apply plugin: 'expo-build-properties'这类残留的Expo构建插件引入。
3. 清理缓存后重新构建
依次执行以下命令:
cd android ./gradlew clean ./gradlew assembleRelease
- 校验构建结果
构建完成后可执行以下命令确认包类型:
aapt dump badging app/build/outputs/apk/release/app-release.apk | grep debuggable
输出debuggable='false'即为正式release版本。
内容的提问来源于stack exchange,提问作者whyamsx
相关产品推荐
相关产品推荐

