You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native应用升级targetSdkVersion至31后崩溃,如何解决?

修复targetSdkVersion 31导致的React Native 0.62.2应用崩溃问题

1. 升级Gradle相关依赖版本

当前gradle(4.10.1)和gradle plugin(3.3.1)版本过低,无法兼容targetSdk31,需同步升级:

  • 将gradle plugin升级至4.2.2(适配targetSdk31的最低兼容版本之一)
  • 将gradle版本升级至6.7.1(与4.2.2版本plugin匹配)
  • 把buildToolVersion升级至31.0.0,与compileSdkVersion 31保持一致

修改项目根目录build.gradle:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.2'
    }
}

修改gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

修改app模块build.gradle:

buildToolsVersion "31.0.0"

2. 修复Android 12启动兼容性问题

Android 12强制要求所有带Intent过滤的Activity必须声明android:exported属性,RN 0.62.2默认配置缺失该属性会导致启动崩溃:
打开AndroidManifest.xml,为主Activity及其他含Intent过滤的Activity添加该属性(主Activity带LAUNCHER过滤器时设为true):

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
    android:launchMode="singleTask"
    android:windowSoftInputMode="adjustResize"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

3. 适配第三方RN模块

部分第三方模块未适配targetSdk31,会因权限、API变更引发崩溃:

  • 排查所有依赖模块,升级至支持Android 12的版本(如react-native-firebase、react-native-camera等均有适配版本)
  • 若模块无更新,可临时在AndroidManifest.xml中添加兼容配置(如给模块内未声明android:exported的Service/Receiver补充该属性)

4. 修复RN核心代码兼容性

RN 0.62.2核心代码存在Android 12不兼容点,需手动调整:

  • 针对Android 12限制的反射调用,修改RN初始化相关代码,或使用社区提供的适配补丁
  • 在MainApplication.java中调整RN初始化逻辑,规避Android 12限制的特性

5. 适配Android 12新增权限

Android 12新增BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE等权限,若应用涉及蓝牙等相关功能,需在AndroidManifest.xml中添加对应权限,并在代码中完成动态申请。


内容的提问来源于stack exchange,提问作者justinNg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:40:18