android studio编译较大项目时出现问题createDebugMainDexClassList....finished with non-zero exit value x

来源:互联网 发布:瑞易物管软件 官网 编辑:程序博客网 时间:2024/06/06 09:52

工作中遇到这样一个问题:在编译大项目时出现的,最终都会finished with non-zero exit value 1;也可能是2.

解决办法:

(1)删除重复的包引用

(2)将生成的dex文件删除

(3)studio中上方工具栏找到"Sync Project with Gradle Files"按钮,在AVD Manager按钮旁边,同步一下,目的是为了按照build.gradle里的来重新配置一下项目运行的环境.

(4)编译工具尽量用最高的,将build-tools调高点.比如说21的,22的.再跑一下项目.

(5)有的时候也会出现too-many-classes-in-main-dex-list问题.这个时候需要在build.gradle中加入如下代码进行配置:

def patchKeepSpecs() {
    
def taskClass = "com.android.build.gradle.internal.tasks.multidex.CreateManifestKeepList";
    
def clazz = this.class.classLoader.loadClass(taskClass)
    
def keepSpecsField = clazz.getDeclaredField("KEEP_SPECS")
    keepSpecsField.
setAccessible(true)
    
def keepSpecsMap = (Map) keepSpecsField.get(null)
    
if (keepSpecsMap.remove("activity") != null) {
        println 
"KEEP_SPECS patched: removed 'activity' root"
    
else {
        println 
"Failed to patch KEEP_SPECS: no 'activity' root found"
    
}
}
patchKeepSpecs()

代码写完,将整个项目clean一下,重新编译即可.

(6)如果这都没能解决你的问题,出现了其他情况,那么只好去StackOverFlow,度娘或者向大神请教了.

1 0
原创粉丝点击