在模块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
错误。