Android Studio 3.0 DexArchiveBuilderException

19

编译仪器测试时出现了以下错误。

Error: com.android.builder.dexing.DexArchiveBuilderException: 无法处理 /Users/rafaelruizmunoz/SourceTree/Weather/app/build/intermediates/transforms/desugar/androidTest/debug/1.jar

Error: com.android.builder.dexing.DexArchiveBuilderException: 在对 org/assertj/core/api/LongPredicateAssert.class 进行 dexing 时出错

Error: com.android.dx.cf.code.SimException: 在未指定 --min-sdk-version >= 24 的情况下使用了默认或静态接口方法

我尝试在我的 build.gradle 中启用/禁用 multiDexEnabled,但没有起到任何帮助作用。

我的 build.gradle 文件中的 android:

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.**.weather"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

你有检查过这个问题吗?- 错误:com.android.dx.cf.code.SimException:在没有 --min-sdk-version >= 24 的情况下使用了默认或静态接口方法。你在 build.gradle 中的 min-sdk 检查中有什么内容? - Dayan
我正在更新我的问题。 - Rafael Ruiz Muñoz
gradle.properties 文件中添加 android.enableD8=true - Sunny
@Sunny,你能把它添加为答案吗?这对我有用。 - Rafael Ruiz Muñoz
@Sunny 很好的回答!我甚至不知道他们的新D8编译器-https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html - Dayan
@RafaelRuiz 我添加了答案。 - Sunny
6个回答

27

gradle.properties 文件中添加 android.enableD8=true,这样应该可以解决问题。

请注意,开启 D8 后,将应用程序导出并上传到 Play Store 存在已知问题。在从 Play Store 下载时,应用程序无法在某些设备上运行。

https://issuetracker.google.com/issues/64740479


1
据我所知,问题不在于将apk部署到Play商店,而是由于生成的应用程序无法在某些设备上运行。这就是为什么他们不建议发布使用D8编译的应用程序的原因。 - user1209216
1
对于那些想了解 android.enableD8 = true 的含义的人,请阅读这里: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html - vepzfe

5

我也遇到了同样的错误,原因是 okhttp。我将其实现版本从以下版本降级:

降级为以下版本:

implementation "com.squareup.okhttp3:okhttp:3.12.1"

4
如果您正在使用guava,可以尝试升级到最新的面向Android的版本。
implementation 'com.google.guava:guava:23.0-android'

这对我很有帮助,因为我使用的是非安卓版本的Guava构建。

4

最新的Android Studio 3.2和Gradle可以通过以下方式解决:

implementation 'com.android.support:multidex:1.0.3' in app build.gradle

0

我曾经遇到过同样的问题,通过在运行配置中禁用高级分析功能来解决了它。

编辑配置 -> 应用程序 -> 分析 -> 启用高级分析(取消选中此选项)。


-1

将这些行添加到您的gradle中:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

请将以下代码添加到您的Gradle中:android.enableD8=true - Null Pointer Exception
gradle.properties - Null Pointer Exception

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