Android构建APK提示Invalid code lengths set报错,如何解决?
我之前遇到过类似的构建错误,结合你使用的Gradle 3.6.3版本特性,给你几个针对性的排查和解决方向:
可能的解决方案
清理项目缓存并重新构建
缓存损坏是这类奇怪构建错误的常见诱因,先试试最基础的清理操作:- 在Android Studio中点击
Build > Clean Project,完成后再点击Build > Rebuild Project - 或者直接用命令行执行:
# macOS/Linux环境 ./gradlew clean assembleDebug # Windows环境 gradlew clean assembleDebug
- 在Android Studio中点击
检查资源压缩与损坏的资源文件
这个错误大概率和资源处理流程有关,你可以:- 暂时关闭资源压缩:打开app模块的
build.gradle,把shrinkResources true改为false,重新构建。如果构建成功,说明是资源压缩时某个资源处理出错了。 - 排查损坏资源:检查
res目录下的文件,比如drawable中的图片是否格式正常(有没有损坏的PNG/JPG)、raw目录下的文件是否存在乱码或格式错误,对比正常项目的资源列表,排查新增的异常资源。
- 暂时关闭资源压缩:打开app模块的
检查依赖冲突或不兼容的第三方库
对比你那个能正常构建的项目,看看当前项目有没有新增的依赖。用命令行查看完整依赖树:./gradlew dependencies重点排查和资源处理、代码混淆相关的库,部分老版本的第三方库可能和Gradle 3.6.3存在兼容性问题。如果发现可疑依赖,尝试移除或更换为兼容版本。
删除本地Gradle缓存
本地Gradle缓存文件损坏也可能导致这类问题:- 关闭Android Studio
- 删除项目根目录下的
.gradle文件夹,以及用户目录下的.gradle/caches文件夹(比如macOS路径是~/Users/你的用户名/.gradle/caches,Windows是C:\Users\你的用户名\.gradle\caches) - 重新打开项目,等待Gradle同步完成后再尝试构建
确认Java版本兼容性
Gradle 3.6.3要求使用JDK 8,如果你当前使用的是JDK 11及以上版本,可能会出现兼容性问题。在Android Studio中检查设置:File > Project Structure > SDK Location,确保JDK Location指向JDK 8的安装路径。排查多模块项目的资源冲突
如果你的项目是多模块结构,检查不同模块之间是否存在同名资源(比如两个模块都有ic_launcher.png),资源重名会导致合并时出错。可以给模块资源添加独特前缀,或者删除重复的资源文件。
内容的提问来源于stack exchange,提问作者Hosein Haqiqian
相关产品推荐
相关产品推荐

