Gradle 构建失败 java.io.IOException:输出 jar 为空

Posted

技术标签:

【中文标题】Gradle 构建失败 java.io.IOException:输出 jar 为空【英文标题】:Gradle Build Failure java.io.IOException: The output jar is empty 【发布时间】:2016-03-16 00:21:42 【问题描述】:

我的 android studio 项目在正常运行应用程序时构建良好,但是当我尝试运行测试时,我收到以下 gradle 错误消息:

:app:transformClassesWithMultidexlistForDebugAndroidTest FAILED
Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebugAndroidTest'.
> java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?
Information:BUILD FAILED
Information:Total time: 27.049 secs
Information:1 error
Information:0 warnings
Information:See complete output in console

让我困惑的是,它指的是 proguard 配置文件中的 -keep 选项,但 proguard 被禁用,正如您在下面的 gradle 文件中看到的那样,我已将 minifyEnabled true 注释掉:

apply plugin: 'com.android.application'

android 
compileSdkVersion "Google Inc.:Google APIs:23"
buildToolsVersion "23.0.1"    

defaultConfig 
    applicationId "com.wasptech.intellidroid"
    minSdkVersion 13
    versionCode 388
    targetSdkVersion 22
    versionName "2.38.08 - RC2"
    multiDexEnabled true       
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"


compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7


dexOptions 
    incremental true
    javaMaxHeapSize "4g"


buildTypes 
    release 
        //minifyEnabled true
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    



dependencies 
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:8.1.0'

compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:support-v13:23.1.1'

compile 'com.crittercism:crittercism-android-agent:5.3.3'

compile 'com.google.code.gson:gson:2.3'
compile 'com.squareup.retrofit:retrofit:1.7.1'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'com.squareup.okio:okio:1.0.0'
compile 'com.squareup:otto:1.3.5'
compile 'com.github.lecho:hellocharts-library:1.5.0@aar'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'

compile 'com.squareup.picasso:picasso:2.5.2'

compile 'com.jakewharton.timber:timber:3.1.0'

compile 'com.github.PhilJay:MPAndroidChart:v2.0.7'

compile 'org.osmdroid:osmdroid-android:4.3'
compile 'org.slf4j:slf4j-simple:1.6.1'

compile project(':mobihelp_sdk_android_v1.4')
compile files('libs/osmbonuspack_v5.1.jar')

compile files('libs/espresso-1.1-bundled.jar')

compile 'com.android.support.test.espresso:espresso-core:2.2'
compile 'com.android.support.test:runner:0.3'

我该如何解决这个问题?

【问题讨论】:

你找到解决办法了吗?? 那是一段时间以前,我的记忆有点模糊,但我认为这是一个注释掉浓缩咖啡罐的情况,因为我不需要它们,除非我我会达到最大方法限制删除了它们。除此之外,尝试手动删除所有 build 和 gradle 文件夹并清理和重建项目。希望这会有所帮助! 【参考方案1】:

你应该使用 testInstrumentationRunner:

com.android.test.runner.MultiDexTestRunner

【讨论】:

【参考方案2】:

multiDexEnabled 设置为false 对我有用。

【讨论】:

以上是关于Gradle 构建失败 java.io.IOException:输出 jar 为空的主要内容,如果未能解决你的问题,请参考以下文章

使用 gradle 构建 android 项目失败

Android Gradle 构建失败(发布构建类型)

由于 androidannotations 插件,Gradle 构建失败

当 JUnit 测试失败时,Mark Gradle 在 Jenkins 中构建不稳定

Jenkins 使用 Gradle 守护进程构建失败

忽略 Gradle 构建失败并继续构建脚本?