Android 12迁移到13后Manifest报错:Activity类不存在问题求助
解决方案
1. 验证自定义占位符的配置
Android 13对Manifest中占位符的解析逻辑更严格,需确保${customUrlScheme}在模块级构建脚本中已正确定义且不为空:
- 在
build.gradle(或build.gradle.kts)的defaultConfig块中添加配置:
android { defaultConfig { manifestPlaceholders = [customUrlScheme: "你的自定义Host值"] } }
- 若使用多渠道打包(productFlavors),需保证每个渠道都配置了该占位符,避免构建时解析为空导致Intent Filter失效。
2. 改用显式Intent启动Activity
如果占位符配置无误,避免依赖隐式Intent匹配,直接指定Activity类启动:
// Kotlin示例 val intent = Intent(this, TargetActivity::class.java) // 需传递Scheme数据时手动拼接Uri intent.data = Uri.parse("rsup://${customUrlScheme}/目标路径") startActivity(intent)
// Java示例 Intent intent = new Intent(this, TargetActivity.class); intent.setData(Uri.parse("rsup://" + customUrlScheme + "/目标路径")); startActivity(intent);
3. 补全Intent Filter必要标签
Android 13对Intent Filter的完整性要求更高,确保<data>所在的Intent Filter包含必备的action和category:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="${customUrlScheme}" android:scheme="rsup" /> </intent-filter>
缺少DEFAULT或BROWSABLE类别会导致系统无法正确匹配隐式Intent,进而误判Activity不存在。
4. 清理构建缓存并重新编译
SDK版本升级后,旧缓存可能引发Manifest解析异常:
- 通过Android Studio执行:
Build -> Clean Project,再执行Build -> Rebuild Project - 或命令行执行:
./gradlew clean assembleDebug
内容的提问来源于stack exchange,提问作者yhlee2
相关产品推荐
相关产品推荐

