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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:10:59