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

Ionic Cordova升级targetSdkVersion至31后报错求助

解决targetSdkVersion升级到31后的android:exported错误

Android 12(API 31)及以上版本强制要求:所有带有intent filter的组件(Activity、Service、BroadcastReceiver)必须显式声明android:exported属性,你的错误就是因为没满足这个规则。

你之前用的<edit-config>配置有两个问题:

  • 配置里的内部标签写错了,应该用<activity android:exported="true" />而非<application android:exported="true" />
  • 目标路径/manifest/application/activity会匹配所有Activity,但可能没覆盖到第三方库中的组件,或者你项目里带intent filter的Service、BroadcastReceiver

正确解决步骤:

  1. 直接修改本地AndroidManifest.xml
    给所有带intent filter的组件手动添加android:exported:

    • 带LAUNCHER intent filter的主Activity必须设为true(允许外部启动)
    • 仅内部使用、带其他intent filter的组件设为false
      示例:
    <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>
    
  2. 如果是Cordova/PhoneGap框架,修正<edit-config>配置
    要么指定具体Activity来修改,要么确保标签和路径正确:

    <!-- 针对主Activity的精确修改 -->
    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application/activity[@android:name='com.yourpackage.MainActivity']">
        <activity android:exported="true" />
    </edit-config>
    
  3. 检查第三方库组件
    运行./gradlew app:mergeReleaseManifest生成合并后的Manifest报告,找出第三方库中未设置android:exported的组件,在自己的AndroidManifest.xml中用同名标签覆盖并添加该属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:36:28