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

React Native目标API31已配置android:exported="true"仍遇清单合并错误

解决React Native Android 12清单合并exported错误

你遇到的问题是Android 12(API 31+)强制要求所有带有<intent-filter>的组件必须明确声明android:exported属性,即便你自己的主清单加了该属性,也可能是以下原因导致报错:

1. 自身清单中存在遗漏的组件

检查你的AndroidManifest.xml里所有包含<intent-filter>的Activity、Service、BroadcastReceiver,确保每个都显式设置了android:exported="true"或android:exported="false"。比如:

<!-- 主入口Activity必须设为true -->
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<!-- 带intent-filter的广播接收器,根据需求设为true或false -->
<receiver
    android:name=".MyCustomReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.example.MY_ACTION" />
    </intent-filter>
</receiver>

2. 第三方依赖的清单未适配Android 12

很多旧版本的React Native第三方库(如推送、登录、分享类库)的内置清单没有添加android:exported属性,合并时会触发错误。

  • 先执行Gradle命令查看合并后的完整清单:
    ./gradlew app:mergeDebugAndroidManifest
    
    然后去路径app/build/intermediates/merged_manifests/debug/AndroidManifest.xml中搜索所有带有<intent-filter>但未声明android:exported的组件,定位到对应的依赖库。
  • 解决方式:
    • 优先升级该依赖库到适配Android 12的最新版本;
    • 若无法升级,在你的AndroidManifest.xml中覆盖该组件的配置,添加android:exported,同时要在manifest根节点声明tools命名空间:
      <!-- 根节点添加tools命名空间 -->
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="com.your.app">
      
          <!-- 覆盖第三方库的接收器配置 -->
          <receiver
              android:name="com.thirdparty.library.SomeReceiver"
              android:exported="false"
              tools:node="merge">
              <intent-filter>
                  <action android:name="android.intent.action.SOME_ACTION" />
              </intent-filter>
          </receiver>
      </manifest>
      

3. 确认编译和目标SDK版本配置

检查android/build.gradle中的compileSdkVersion,以及app/build.gradle中的targetSdkVersion,确保两者都设置为31或更高版本,仅设置targetSdkVersion是不够的。

4. 清理缓存后重新构建

执行以下命令清理Gradle缓存,再重新运行项目:

./gradlew clean
npx react-native run-android

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:33