在模块com.eternitywall:java opentimestamps:1.17中使用ProofMode Android库复制类okio

在模块com.eternitywall:java opentimestamps:1.17中使用ProofMode Android库复制类okio,java,android,kotlin,gradle,dependencies,Java,Android,Kotlin,Gradle,Dependencies,我试图将org.witness:android libproofmode:0.7和com.squareup.reformation2:reformation:2.9.0依赖项添加到我的android项目中。但是,以下错误发生在我构建项目之后 Duplicate class okio.AsyncTimeout found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.

我试图将
org.witness:android libproofmode:0.7
com.squareup.reformation2:reformation:2.9.0
依赖项添加到我的android项目中。但是,以下错误发生在我构建项目之后

Duplicate class okio.AsyncTimeout found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.AsyncTimeout$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.AsyncTimeout$2 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.AsyncTimeout$Watchdog found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Base64 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Buffer found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Buffer$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Buffer$2 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.BufferedSink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.BufferedSource found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.ByteString found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.DeflaterSink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.ForwardingSink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.ForwardingSource found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.ForwardingTimeout found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.GzipSink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.GzipSource found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.InflaterSource found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Okio found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Okio$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Okio$2 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Okio$3 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.RealBufferedSink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.RealBufferedSink$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.RealBufferedSource found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.RealBufferedSource$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Segment found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.SegmentPool found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.SegmentedByteString found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Sink found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Source found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Timeout found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Timeout$1 found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
Duplicate class okio.Util found in modules jetified-java-opentimestamps-1.17.jar (com.eternitywall:java-opentimestamps:1.17) and jetified-okio-1.17.2.jar (com.squareup.okio:okio:1.17.2)
我已经尝试用以下脚本排除
okio
模块,但没有帮助

implementation("org.witness:android-libproofmode:0.7") {
    exclude group: "com.squareup.okio", module: "okio"
}
如果我排除了所有配置中的所有
okio
模块,项目就可以成功构建。尽管如此,项目仍然需要
okio
模块中的一些类(例如Crashlytics需要它)。因此,在所有配置中排除模块不是可行的解决方案

configurations {
    all*.exclude group: "com.squareup.okio", module: "okio"
}
我应该如何排除
org.witness:android libproofmode
中的
okio
模块,并成功构建项目?
以下是
app/build.gradle
文件中的最小示例

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.project"
        minSdkVersion 26
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }

    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
    }
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.10"

    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'

    implementation("com.squareup.retrofit2:retrofit:2.9.0")

    implementation("org.witness:android-libproofmode:0.7")
    // https://stackoverflow.com/questions/56639529/duplicate-class-com-google-common-util-concurrent-listenablefuture-found-in-modu
    implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

    testImplementation 'junit:junit:4.13'

    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

您是否尝试添加transitive=false?但是,通常情况下,当您排除某个依赖项中的库组时,这应该只从该依赖项中排除。在您的情况下,这应该没问题。@mirsaidoff我已经尝试添加
transitive=false
,但它也会排除
android libproofmode
的所有可传递依赖项,从而在运行时导致
ClassNotFound
错误。