Android Studio 3.2 Canary在Windows编译APK失败求助
解决Windows环境下AndroidX编译时的DexArchiveBuilderException(NullPointerException)
我之前在Windows环境切换到Android Studio 3.2 Canary版本使用AndroidX时,也遇到过完全相同的编译异常——核心问题是Jetifier处理后的依赖缓存文件损坏,导致Zip读取时抛出NullPointerException: entry。以下是亲测有效的解决步骤:
核心解决步骤
- 关闭Android Studio:确保没有进程在占用Gradle缓存文件
- 清理Jetified依赖缓存:删除路径
C:\Users\rafael.chagas\.gradle\caches\transforms-1下的所有内容,这个目录是Jetifier转换后依赖的缓存位置,损坏的jetified-play-services-basement-15.0.1.aar就在这里面 - 重新编译项目:打开Android Studio,依次执行
Build->Clean Project,然后Build->Rebuild Project
额外排查点(如果上述步骤无效)
- 检查
gradle.properties中的配置是否准确,确保以下两行没有拼写错误:android.enableJetifier=true android.useAndroidX=true - 更新Android Studio到最新的Canary版本:早期3.2 Canary版本存在Jetifier的已知bug,更新后可能修复问题
- 验证Gradle缓存目录的权限:右键点击
.gradle目录,选择「属性」->「安全」,确保当前用户拥有读写权限,Windows的安全策略偶尔会阻止Gradle写入缓存文件
问题原因分析
这个异常的根源是:Jetifier在Windows环境下生成的转换后依赖包(比如jetified-play-services-basement-15.0.1.aar)出现了损坏,导致Dex编译器在读取Zip文件时找不到对应的entry,从而抛出NullPointerException。清理缓存后,Gradle会重新下载并生成完整的Jetified依赖,就能解决这个问题。
内容的提问来源于stack exchange,提问作者Rafael Chagas




