Android Studio 执行任务“:app:preDexDebug”失败

4

我的构建应用程序出现了奇怪的行为。

奇怪的是,这个com.nineoldandroids是来自Android资源库的一个jar包。

我尝试删除构建源代码并重新编译,但没有成功。

我的build.gradle文件:

buildscript {
    repositories {
        maven { url 'http://download.crashlytics.com/maven' }
    }

    dependencies {
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

repositories {
    maven { url 'http://download.crashlytics.com/maven' }
}

android {
    compileSdkVersion 21
    buildToolsVersion "20.0.0"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    defaultConfig {
        applicationId "xxxxxxxx"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            // enable crashlytics where you need
            buildConfigField "boolean", "USE_CRASHLYTICS", "false"
            ext.enableCrashlytics = false
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library_refreshaction_appcompat')
    compile project(':EnhancedListView')
    compile project(':library_numberpicker')
    compile project(':materialDesign')
    compile project(':library_typeface')
    compile project(':library_updatechecker')
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'se.emilsjolander:stickylistheaders:2.5.0'
    compile files('libs/Parse-1.7.1.jar')
    compile files('libs/BixolonPrinter.jar')
    compile files('libs/bolts-android-1.1.3.jar')
    compile files('libs/core-3.1.0.jar')
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/universal-image-loader-1.9.2.jar')
    compile files('libs/VposAPI.jar')
    compile project(':android-support-v4-preferencefragment-master')
}

错误日志:
Error:Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Users/Marcus/Downloads/adt-bundle-mac-x86_64-20140702/sdk/build-tools/21.0.2/dx --dex --output /Users/Marcus/Workspace/android-pdv/app/build/intermediates/pre-dexed/debug/library-2.4.0-c0bb3fabf202a58f481b22d99eb3ba9b89fd232d.jar /Users/Marcus/.gradle/caches/modules-2/files-2.1/com.nineoldandroids/library/2.4.0/e9b63380f3a242dbdbf103a2355ad7e43bad17cb/library-2.4.0.jar
  Error Code:
    139

1
相关:https://dev59.com/Ieo6XIcBkEYKwwoYLhTO - 错误139似乎意味着"分段错误",在你的情况下是在dx中发生的,这有点糟糕,因为这不应该发生。尝试从控制台手动运行失败的命令,并查看是否可以看到更多的错误消息。 - zapl
3个回答

5
根据 @zapl 提供的链接(无法使用Android Studio - Gradle 1.7构建Android项目),这是一种奇怪的行为,没有只有一种解决方法,如本文所述。
我不能确切地说我是怎么解决的,因为我试了很多方法,直到它消失了。
但正如文章中所说,以下是解决方法:
  • 格式不正确资源(缺少属性,错误的标记等等...)
  • 样式中的+id
  • 重复的资源/库
  • Declare-Style缺少名称
  • 资源不匹配,请尝试使用不同版本的AAPT。
像我的问题一样,原因未知。因此,有用的方法是:
  1. 找到识别该错误的真实原因
  2. 等待更新的AAPT返回一些错误消息
  3. 编写可能的共同原因列表。

做得好!重复的库... - Sindri Þór

2

我曾经遇到过同样的问题,简单地重启Android Studio就解决了。

我只能猜测原因,但我认为是因为在模拟器还在启动的时候启动了我的应用程序。


1
搜索了半个小时,直到我找到了这个提示... - Mira Weller

0

看起来你已经安装了build-tools 21.0.2,但在gradle buildTootlsVersion中使用的是20.0.0。 此外,你定义了repositories两次,而你只需要在第一个gradle块中定义一次。

尝试更改构建工具版本。


我已经设置了build-tools 21.0.2,我尝试了很多其他的设置,但仍然出现相同的bug,有时它会说问题出在另一个库jar文件中。 - Marckaraujo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接