【问题标题】:DexGuard java.io.IOException: The same input jarDexGuard java.io.IOException:相同的输入jar
【发布时间】:2017-11-24 11:04:48
【问题描述】:

我在使用 dexguard 时遇到了这个问题

> Task :app:dexguardStaging FAILED

TaskInternal.execute() 方法已被弃用,并计划在 Gradle 5.0 中删除。有更好的方法来重用任务逻辑,请参阅https://docs.gradle.org/4.3/userguide/custom_tasks.html#sec:reusing_task_logic

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':app:dexguardStaging' 执行失败。

    java.io.IOException:同一个输入 jar [/Users/radiityagumay/Library/Android/sdk/platforms/android-25/android.jar] 被指定了两次。

谁能帮忙?

更新 我已经通过恢复到分发 gradle 3.5 解决了这个问题,之前我使用的是 4.3,

distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip

并将所有构建从 3.0.0 降级到 2.3.3,删除 maven google.com

classpath 'com.android.tools.build:gradle:2.3.3'

当我使用带有 build gradle 3.0.0 或 3.0.1 的 Android Studio 3 并且 dexguard (7.3.11) 也使用 (8.0.18) enable 时,发生了这个问题。

这可能与 dexguard 版本的最新 gradle 版本不匹配。

谢谢

【问题讨论】:

  • 可以给我logcat的截图吗?所以我确定什么是确切的问题。
  • 刚刚更新,只有我得到了。
  • @ChetanPatel 这是构建错误,不是运行时错误,所以没有logcat。
  • 看起来您将 SDK 库包含了两次。
  • @m0skit0 是的,我有几个模块使用不同的 support-v4 版本。但我已经合并了具有相同版本的那些。

标签: android dexguard


【解决方案1】:

请尝试以下代码并告诉我它是否适合您

像这样在你的 gradle 中进行更改

应用插件:'com.android.application'

android {

    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.example.testapp"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.1"
        multiDexEnabled true  // put this line in your gradle
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    //put below code in your gradle
    dexOptions {
        preDexLibraries = false
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.2'  //put this dependencies in your gradle
    // Rest of your dependencies
}

& 也会更改您的应用程序文件。

public class TestApplication extends MultiDexApplication {

    @Override
    public void onCreate() {
        super.onCreate();
    }
}

&

在清单文件中>>在应用程序标签中>>在下面的行中提及

android:name=".TestApplication"

希望这对你有用,如果有用,请告诉我。

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多