React Native Android应用API Level 33迁移至34构建报错求助
React Native Android 从API Level 33迁移至34的构建问题解决方案
一、核心版本适配检查
- React Native版本兼容
RN 0.70.x对API 34的原生支持有限,建议升级RN至0.71.0+(该版本开始正式适配API 34);若暂不做大版本升级,需手动调整依赖与配置。 - Gradle与AGP版本匹配
Gradle 8.0.0搭配JDK 17是合规组合,但需确保Android Gradle Plugin(AGP)版本对应:Gradle 8.0需AGP 7.4.2+。修改android/build.gradle中的classpath:
同时确认dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 其他classpath依赖保持不变 }android/gradle/wrapper/gradle-wrapper.properties的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.0-all.zip
二、统一Android SDK配置
项目级android/build.gradle
buildscript { ext { compileSdkVersion = 34 targetSdkVersion = 34 minSdkVersion = 21 // 按需调整最低兼容版本 ndkVersion = "25.1.8937393" } // 其他配置保持不变 }
模块级android/app/build.gradle
android { namespace "com.your.app.package" // RN 0.70+必须配置命名空间 compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { applicationId "com.your.app.package" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion // 其他配置保持不变 } // 其他配置保持不变 }
三、依赖库兼容性升级
根据你的package.json,以下依赖需升级以适配API 34:
- Firebase系列:版本不一致(app/messaging为16.2.0,crashlytics为17.4.1),统一升级至17.5.0+
- @notifee/react-native:7.6.1版本过旧,升级至7.8.0+(修复API 34通知权限问题)
- react-native-device-info:10.4.0升级至10.11.0+(适配API 34设备信息获取逻辑)
- react-native-document-picker:8.1.3升级至9.0.0+(支持API 34文件选择权限)
- react-native-splash-screen:3.3.0升级至3.6.0+(修复API 34启动页适配)
- @react-native-community/checkbox:0.5.12已废弃,替换为
@react-native-community/checkbox@0.6.0或RN内置Checkbox组件
升级命令示例:
npm install @react-native-firebase/app@17.5.0 @react-native-firebase/messaging@17.5.0 @react-native-firebase/crashlytics@17.5.0 npm install @notifee/react-native@7.8.0 react-native-device-info@10.11.0 react-native-document-picker@9.0.0 react-native-splash-screen@3.6.0
四、API 34特定适配
- 添加通知权限:API 34新增
POST_NOTIFICATIONS权限,在AndroidManifest.xml中添加:<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> - 文件访问适配:API 34收紧文件访问限制,依赖升级后会自动适配;若有自定义文件操作逻辑,需切换至MediaStore或SAF框架。
- 后台启动限制:API 34禁止后台直接启动Activity,检查代码中是否有相关逻辑,改为通知跳转或前台服务实现。
五、清理缓存并重构
执行以下命令清除旧配置缓存,避免构建冲突:
cd android && ./gradlew clean cd .. && rm -rf node_modules package-lock.json npm install npx react-native run-android
内容的提问来源于stack exchange,提问作者Sushant Shivraj
相关产品推荐
相关产品推荐

