如何在Capacitor 2中构建适配Android Target SDK 31的应用?
Capacitor 2适配Android Target SDK 31解决Google Play上传报错方案
覆盖Capacitor核心组件的Manifest属性
在应用的AndroidManifest.xml中,直接声明Capacitor自带的核心组件(如MainActivity、SplashActivity),显式添加android:exported属性并保留原有意图过滤器,以此覆盖Capacitor官方aar包中的配置,确保合并后的Manifest里这些组件符合要求。示例代码:<activity android:name="com.getcapacitor.MainActivity" android:exported="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:launchMode="singleTask" android:theme="@style/AppTheme.NoActionBarLaunch"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.getcapacitor.SplashActivity" android:exported="true" android:theme="@style/AppTheme.Launch"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>排查并修复第三方插件的Manifest问题
部分Capacitor插件的Android端会注册带意图过滤器的组件(如广播接收器、服务),同样可能缺失android:exported属性,需按以下步骤处理:- 执行
./gradlew app:mergeDebugAndroidManifest(Release版本替换为mergeReleaseAndroidManifest)生成合并后的Manifest文件,路径一般为app/build/intermediates/merged_manifests/debug/AndroidManifest.xml - 搜索文件中所有带有
<intent-filter>但未设置android:exported的组件 - 在应用的
AndroidManifest.xml中重新声明这些组件,根据组件功能需求添加android:exported="true"或false(启动类必须设为true)
- 执行
验证合并后的Manifest配置
打开生成的合并Manifest文件,逐一检查所有带意图过滤器的组件,确认均已设置android:exported属性,无遗漏项。
内容的提问来源于stack exchange,提问作者JoshStrange
相关产品推荐
相关产品推荐

