升级Android Studio 2024.1.1后Release APK启动报LinkageError求助
你遇到的问题是Android Studio升级到2024.1.1后,Release APK启动抛出LinkageError,提示子类重写了父类的final方法,但父类代码中onCreate并未标记为final,Debug版本正常。以下是可能的原因和解决办法:
R8混淆/优化误处理
AGP 8.3.x(对应AS 2024.1.1)的R8优化逻辑可能发生了变化,在Release构建时误将父类MyActivity的onCreate方法标记为final。
解决:在你的ProGuard规则文件(proguard-rules.pro)中添加以下规则,强制保留父类的onCreate方法:-keepclassmembers class com.me.mylib.core.MyActivity { public void onCreate(android.os.Bundle); }或者暂时关闭R8全模式验证,在
gradle.properties中添加:android.enableR8.fullMode=falseAGP版本兼容性问题
升级到AGP 8.3.x后,字节码处理(如Desugar)的逻辑可能导致父类方法被错误标记。
解决:尝试降级AGP版本到之前可用的版本(比如8.2.x),修改项目根目录的build.gradle(或build.gradle.kts)中的AGP依赖版本:dependencies { classpath 'com.android.tools.build:gradle:8.2.2' }依赖库的Release变体异常
你依赖的mylib库在Release构建时可能被混淆或处理过,导致onCreate被标记为final,而Debug版本用的是未处理的库,所以无问题。
解决:检查mylib模块的build.gradle,确认Release构建的混淆规则是否误将onCreate设为final;或者确保App模块在Release构建时依赖的是mylib的正确变体(比如本地库的话,可临时指定依赖debug变体测试:implementation project(path: ':mylib', configuration: 'debug'))。构建缓存残留问题
升级AS后,旧的构建缓存可能导致Release构建时使用了错误的字节码文件。
解决:- 执行
File -> Invalidate Caches... -> Invalidate and Restart清理AS缓存 - 执行命令清理Gradle构建缓存:
Windows系统使用:./gradlew clean build --no-build-cachegradlew clean build --no-build-cache
- 执行
内容的提问来源于stack exchange,提问作者ususer

