M1芯片Mac下Android Studio arm64版kapt报InvocationTargetException错误
解决方案
方案1:升级依赖版本(优先,可保留原生aarch64运行性能)
该问题本质是早期版本的kapt、Room等注解处理器未适配Apple Silicon架构,升级对应依赖即可原生运行:
- Kotlin插件及相关依赖版本升级至
1.5.30及以上,该版本开始官方kapt原生支持aarch64架构 - Room组件版本升级至
2.4.0-alpha03及以上,适配arm64架构的注解处理器 - 逐一排查项目中其他使用kapt的依赖(如Dagger、Glide、Retrofit注解处理器等),全部升级至2021年下半年及以后发布的适配aarch64的版本
方案2:使用Rosetta 2转译运行(适合暂时无法升级依赖的场景)
如果项目依赖暂时不能升级,可通过转译模式兼容x86架构的注解处理器:
- 右键访达中「应用程序」里的Android Studio,选择「显示简介」,勾选「使用Rosetta打开」,重启IDE后再构建即可,和x86版Android Studio运行效果一致,仅性能比原生稍低
- 若不想修改IDE运行模式,可单独给Gradle指定x86版本JDK:下载x86架构的JDK 11,在项目
local.properties文件中添加配置org.gradle.java.home=你的x86 JDK本地路径,仅构建环节走转译,IDE仍保持原生运行,降低性能损失
如果需要定位具体触发问题的依赖,可在终端执行构建命令./gradlew assembleDebug --stacktrace,查看完整堆栈信息即可定位到未适配的注解处理器,针对性处理即可。
内容的提问来源于stack exchange,提问作者hannes ach
相关产品推荐
相关产品推荐

