Android Studio Gradle打包卡在:app:transformClassesWithDexForRelease阶段求助
Android Release构建卡在
:app:transformClassesWithDexForRelease 93%的解决方案 我来帮你分析下这个卡 dex 构建的问题,结合你的环境和配置,大概率是内存不足、dex 优化没做好或者依赖冲突导致的,给你几个优先级从高到低的解决方案:
1. 紧急解决内存瓶颈(最关键)
你的Windows 10 x86系统只有3GB内存,而Android Studio + Gradle构建(尤其是dex阶段)对内存需求极高,当前1G的javaMaxHeapSize完全不够:
- 调整
dexOptions的堆内存:把javaMaxHeapSize "1g"改成javaMaxHeapSize "2g",这是x86系统能分配的最大合理值了 - 给Android Studio本身扩容:找到AS安装目录下的
studio.exe.vmoptions(或者通过AS的File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle VM options),将-Xmx参数改成-Xmx2048m - 关闭所有后台无关程序(浏览器、微信、杀毒软件等),给构建进程腾内存
2. 启用高效的D8 Dex编译器
旧的dx工具效率很低,D8是谷歌推出的新一代dex编译工具,能大幅提升编译速度:
在项目根目录的gradle.properties文件中添加一行:
android.enableD8=true
你的Gradle 2.3.3版本是支持D8的,无需升级插件也能启用。
3. 优化构建配置与依赖
- 统一SDK版本:你的
compileSdkVersion=26但targetSdkVersion=25,版本不一致可能引发潜在问题,把targetSdkVersion改成26 - 临时关闭混淆与资源压缩:赶时间的话可以先注释掉release构建里的
minifyEnabled true和shrinkResources true,这两个操作会大幅增加构建时间,等版本发布后再回来优化包体积 - 检查重复依赖:执行命令
./gradlew app:dependencies查看依赖树,找出重复的类或库(比如Mobvista的多个aar可能存在重复依赖),用exclude语法排除冗余依赖,例如:
compile(name: 'mobvista-8.11.0-alphab', ext: 'aar') { exclude group: 'com.google.android.gms' }
- 升级Gradle插件(可选但推荐):你用的Gradle 2.3.3比较老旧,AS3.0适配的Gradle Plugin 3.0.0对dex构建有不少优化,可以尝试修改项目根目录的
build.gradle:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.0' } }
同时修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl为:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
4. 清理缓存与命令行构建
- 清理AS缓存:点击
File -> Invalidate Caches / Restart,选择Invalidate and Restart,清除损坏的构建缓存 - 用命令行构建:打开命令提示符进入项目目录,执行:
gradlew clean assembleRelease --no-build-cache
有时候AS的UI会有卡顿,命令行构建反而更稳定。
这些方法应该能帮你快速解决卡在93%的问题,优先尝试内存调整和D8启用,见效最快。
内容的提问来源于stack exchange,提问作者SolderingIronMen
相关产品推荐
相关产品推荐

