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

Android Studio编译报错:无法找到Manifest类的问题求助

解决Android Studio中cannot find symbol class Manifest报错及权限检查问题

首先咱们先快速搞定当前的编译阻塞,再深挖不同环境的差异原因:

1. 修正权限代码的Manifest引用逻辑

你现在导入的是自己项目包下的tld.domain.appname.Manifest,但系统权限的常量其实都在android.Manifest类里,完全不需要依赖自定义的Manifest类。给你两种简单修复方式:

  • 替换导入语句:把错误的import tld.domain.appname.Manifest;直接换成import android.Manifest;,这样原代码里的Manifest.permission.MANAGE_ACCOUNTS就能正常识别了。
  • 用全限定名直接引用:如果不想加导入,把代码里的Manifest.permission改成android.Manifest.permission即可,示例代码如下:
int permissionCheck = ContextCompat.checkSelfPermission(mView.getTarget(), android.Manifest.permission.MANAGE_ACCOUNTS); 
if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(mView.getTarget(), new String[]{android.Manifest.permission.MANAGE_ACCOUNTS}, Constants.PERMISSION_REQUEST_MANAGE_ACCOUNTS); 
}

2. 修正权限声明的标签错误

注意你写的权限声明是<permission android:name="android.permission.MANAGE_ACCOUNTS" />,这是自定义权限的写法,而申请系统自带的权限必须用<uses-permission>标签,所以要改成:

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

这个小错误可能会导致你即使申请权限成功,应用也拿不到实际的权限权限,得赶紧改过来。

3. 排查其他环境能编译的原因

其他Android Studio环境能保留错误导入还正常编译,大概率是这几种情况:

  • AGP版本差异:不同版本的Android Gradle Plugin对Manifest文件的处理逻辑不一样,旧版本可能会自动生成项目包下的Manifest类,新版本取消了这个行为。去对比下两个环境的项目级build.gradle里AGP的版本号。
  • 代码生成工具差异:项目里可能有注解处理器(比如旧版Dagger、ButterKnife)或自定义代码生成脚本,在其他环境中自动生成了tld.domain.appname.Manifest类,当前环境没触发生成。可以去build/generated目录下找找有没有这个类的生成文件。
  • 缓存问题:其他环境的Gradle缓存里存着之前生成的Manifest类,当前环境的缓存被清掉了。可以试试在当前环境执行File > Invalidate Caches... > Invalidate and Restart,不过更推荐用前面的方法修正引用,别依赖这种不稳定的生成类。

内容的提问来源于stack exchange,提问作者João Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:44:56