Android Studio 3.1编译失败:出现ClassNotFoundException异常
解决Android Studio 3.1升级后
transformClassesWithProfilers-transformForDebug编译异常的方案 嘿,这个问题我升级AS3.1的时候也踩过坑!明明类存在却报ClassNotFoundException,大概率是升级后构建缓存、Profiler配置冲突或者工具链兼容问题导致的,给你几个亲测有效的解决步骤:
先清掉旧构建缓存,从头构建
AS升级后遗留的旧缓存经常搞事情,先把这些清干净:- 点击顶部工具栏的
Build→Clean Project,等完成后再点Build→Rebuild Project - 如果还是不行,手动删掉项目根目录的
.gradle文件夹,以及MyModule下的build文件夹,然后点击File→Sync Project with Gradle Files重新同步
- 点击顶部工具栏的
检查Profiler相关的构建配置
AS3.1对Profiler的集成做了调整,旧的自定义配置可能冲突:- 打开
MyModule的build.gradle,看看有没有和profilers相关的自定义transform、插件引用 - 如果有旧的Profiler相关配置,先暂时注释掉,再编译试试
- 确认
gradle-wrapper.properties里的Gradle版本和AS3.1匹配——AS3.1对应Gradle 4.4及以上版本,建议用官方推荐的配套版本,避免版本不兼容
- 打开
再仔细核对类的包名和路径
虽然你说类存在,但还是要确认细节:- 检查
package.mymodule.MyClass的包名和代码里的实际包名完全一致吗?注意大小写!Gradle构建对大小写是敏感的,哪怕系统不敏感 - 确认这个类在
MyModule的正确源码目录下,比如src/main/java(通用代码)或者src/debug/java(仅debug变体) - 排查有没有其他依赖库或模块里有同名类,导致类加载冲突
- 检查
试试关闭Instant Run
AS3.1的Instant Run和Profiler的兼容性不太好,关闭它说不定能解决:
打开File→Settings→Build, Execution, Deployment→Instant Run,取消勾选Enable Instant Run to hot swap code/resource changes on deploy,重启AS后再编译
要是以上步骤都没用,可以试试新建一个空项目,把MyModule的代码一点点迁过去,排查是不是项目根目录的全局Gradle配置出了问题。
内容的提问来源于stack exchange,提问作者andrfog
相关产品推荐
相关产品推荐

