React Native 67.5升级Android SDK34后Release包崩溃求助
针对React Native 67.5 + Android SDK 34 Release启动崩溃的解决方案
1. 检查Release打包的Bundle生成配置
- 打开
android/app/build.gradle,确保release构建变体中开启bundle打包:android { ... buildTypes { release { ... minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" // 关键配置:确保Release模式下生成并打包bundle project.ext.react = [ bundleInRelease: true, entryFile: "index.js" // 若使用TS则改为index.tsx ] } } } - 手动预先生成bundle文件,避免打包遗漏:
先创建android/app/src/main/assets目录(若不存在),再执行命令:npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
2. 适配Android SDK 34的文件权限
SDK34收紧了文件访问规则,需检查:
- 在
AndroidManifest.xml中添加必要权限(兼容新旧版本):<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> - 解压打包后的APK,确认
assets/index.android.bundle文件存在,若缺失则重新执行bundle生成命令。
3. 调整Gradle配置适配SDK34
RN67.5默认配置需适配SDK34:
- 在
android/build.gradle中更新SDK版本:buildscript { ext { buildToolsVersion = "34.0.0" minSdkVersion = 21 compileSdkVersion = 34 targetSdkVersion = 34 } ... } - 升级Gradle版本(当前7.3可兼容,升级到7.4适配性更好),修改
gradle-wrapper.properties:distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
4. 修复ProGuard混淆问题
RN核心类被混淆会导致bundle加载失败,检查proguard-rules.pro:
- 确保包含React Native基础混淆规则:
-keep class com.facebook.react.** { *; } -keep class com.facebook.react.bridge.** { *; } -keep class com.facebook.react.modules.** { *; } -keep class com.facebook.react.uimanager.** { *; } -keep class javax.annotation.** { *; } -keep class kotlin.** { *; } -keep class kotlinx.coroutines.** { *; } - 若使用第三方RN库,添加对应库的混淆规则。
5. 彻底清理重建项目
执行以下命令清除缓存并重新打包:
cd android && ./gradlew clean cd .. && rm -rf node_modules && npm install npx react-native start --reset-cache cd android && ./gradlew assembleRelease
内容的提问来源于stack exchange,提问作者1110
相关产品推荐
相关产品推荐

