Android Studio开启Instant Run构建失败:找不到ActionBarActivity字节码
原因分析
这个问题的核心矛盾在于Instant Run的增量构建机制和废弃类ActionBarActivity的缺失:
ActionBarActivity早在Android Support Library 22.1.0版本就被官方废弃,后续的support库版本(尤其是较新的版本)已经完全移除了这个类,取而代之的是AppCompatActivity。- 你的项目要么直接引用了
ActionBarActivity,要么某个依赖库间接引用了它;而Instant Run的增量构建逻辑在处理类转换时,会严格检查所需字节码的存在性,一旦找不到就直接抛出构建失败。 - 关闭Instant Run后是全量构建,编译器的依赖解析和兼容处理会更宽松,可能自动跳过了这个缺失的类引用(比如你的项目实际并没有真正使用这个类),所以能正常运行。
解决方法
按照以下步骤逐一排查解决:
替换废弃类引用
在整个项目中搜索所有import android.support.v7.app.ActionBarActivity;的代码,把它们替换成import android.support.v7.app.AppCompatActivity;,同时将继承ActionBarActivity的Activity改为继承AppCompatActivity。这是最根本的解决方式,因为ActionBarActivity已经被官方淘汰,后续不会再维护。检查并清理依赖树
打开终端,在项目根目录执行命令:./gradlew app:dependencies查看依赖树,找到还在引用
ActionBarActivity的第三方库。如果是第三方库版本过旧,尝试升级到该库的最新稳定版本;如果无法升级,在依赖声明中排除掉旧的support库模块,比如:implementation('com.example.old-library:1.0.0') { exclude group: 'com.android.support', module: 'appcompat-v7' }清理Instant Run缓存
Instant Run的缓存可能残留了旧的构建信息,导致增量构建出错。操作步骤:- 打开Android Studio,点击顶部菜单栏的
File->Invalidate Caches / Restart... - 在弹出的窗口中选择
Invalidate and Restart,等待IDE重启并自动清理缓存。
- 打开Android Studio,点击顶部菜单栏的
升级Android Studio(可选)
Android Studio 3.0.1是比较老旧的版本,后续的版本(比如3.1+)修复了大量Instant Run的兼容性bug。如果条件允许,升级到较新的稳定版本,能从根源减少这类构建问题。
内容的提问来源于stack exchange,提问作者DCoder
相关产品推荐
相关产品推荐

