У меня есть BaseDialogFragment
, который использует внедрение зависимостей с помощью Dagger, а затем у меня есть два разных модуля, которые подклассов BaseDialogFragment
.
При попытке построить я получаю следующую ошибку:
> Task :app:transformClassesWithDexBuilderForDevelopmentDebug
AGPBI: {"kind":"error","text":"Program type already present: BaseDialogFragment_MembersInjector","sources":[{}],"tool":"D8"}
> Task :app:transformDexArchiveWithDexMergerForDevelopmentDebug FAILED
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Я искал свой проект, и оказалось, что генерируется только два разных BaseDialogFragment_MembersInjector
класса: по одному в каждом соответствующем модуле.
У меня уже есть:
- Очистил проект
- Удалил сгенерированный дубликат класса
- Недействительные кэши и перезапущены
- Обновлена версия Dagger
- Гарантировано, что установлена
multidexEnabled
в значение true - Добавлено необязательное поле
@inject
для базового класса для найденной рекомендации здесь
android.gradle
:
android {
compileSdkVersion "$android_compile_version".toInteger()
defaultConfig {
minSdkVersion "$android_min_sdk".toInteger()
targetSdkVersion "$android_target_sdk".toInteger()
versionCode = 1
versionName = "1.0"
manifestPlaceholders = rootProject.ext.manifestPlaceholders
renderscriptTargetApi 17
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
packagingOptions {
exclude "META-INF/DEPENDENCIES"
exclude "META-INF/NOTICE"
exclude "META-INF/LICENSE"
exclude "META-INF/LICENSE.txt"
exclude "META-INF/NOTICE.txt"
exclude "META-INF/maven/com.google.guava/guava/pom.properties"
exclude "META-INF/maven/com.google.guava/guava/pom.xml"
exclude "LICENSE.txt"
exclude ".readme"
}
signingConfigs {
debug {
storeFile file("${rootProject.projectDir}/keystores/debug.keystore")
}
release {
storeFile file("/opt/android-keystore/youversion.keystore")
storePassword "youversion"
keyAlias System.getenv("CERT_USER")
keyPassword System.getenv("CERT_PASS")
}
}
buildTypes {
debug {
debuggable true
minifyEnabled false
testCoverageEnabled coverage
if (project.name == "app") {
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
testProguardFiles getDefaultProguardFile("proguard-android.txt"), "test-proguard-rules.pro"
}
multiDexKeepProguard file("${rootProject.projectDir}/config/proguard/test-proguard-keep.pro")
signingConfig signingConfigs.debug
ext.enableCrashlytics = false
matchingFallbacks = ['release']
}
release {
debuggable false
minifyEnabled project.name == "app"
shrinkResources project.name == "app"
if (project.name == "app") {
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
signingConfig signingConfigs.release
}
}
testOptions {
animationsDisabled true
}
dataBinding {
enabled true
}
lintOptions {
lintConfig file("$rootProject.projectDir/config/lint/default.xml")
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
useLibrary "org.apache.http.legacy"
}
dependencies.gradle
:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines"
if (project.parent?.name == "modules" && project.name != "base") {
implementation project(":modules:base")
}
implementation("youversion.red:red-android:$red_red_version@aar") {
exclude group: "com.squareup.okhttp"
exclude group: "com.squareup.okio"
exclude group: "com.google.firebase"
exclude group: "com.google.android.gms"
exclude group: "com.facebook.android"
exclude group: "com.android.support"
}
implementation("youversion.red:api-android:$red_api_version@aar") {
exclude group: "com.squareup.okhttp"
exclude group: "com.squareup.okio"
exclude group: "com.google.firebase"
exclude group: "com.google.android.gms"
exclude group: "com.facebook.android"
exclude group: "com.android.support"
}
implementation("youversion.red:achievements-android:$red_api_version@aar") {
exclude group: "com.squareup.okhttp"
exclude group: "com.squareup.okio"
exclude group: "com.google.firebase"
exclude group: "com.google.android.gms"
exclude group: "com.facebook.android"
exclude group: "com.android.support"
}
// TODO: pull this from red:red
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.11.0-LC2") {
exclude group: "org.jetbrains.kotlin"
}
// brotli
implementation "org.brotli:dec:$brotli_version"
// wire
implementation "com.squareup.wire:wire-runtime:2.3.0-RC1"
// arch
implementation "android.arch.lifecycle:extensions:$app_arch_version"
implementation "android.arch.persistence.room:runtime:$app_arch_version"
// flurry
implementation "com.flurry.android:analytics:$flurry_version@aar"
// proto
implementation("youversion.android:protobuf:$bible_proto_version@aar") {
exclude group: "com.google.code.findbugs"
exclude group: "com.squareup.okio"
exclude group: "com.squareup.okhttp3"
exclude group: "com.google.android.gms"
exclude group: "com.facebook.android"
exclude group: "com.android.support"
exclude group: "com.github.bumptech.glide"
exclude group: "com.google.firebase"
exclude group: "com.android.databinding"
exclude group: "com.google.dagger"
exclude group: "android.arch.lifecycle"
exclude group: "android.arch.persistence.room"
}
// nuclei
api("nuclei.android:nuclei-android:$nuclei_version") {
exclude group: "com.android.support"
exclude group: "com.google.android.gms"
exclude group: "com.google.android.exoplayer"
exclude group: "com.squareup.okhttp3"
}
api("nuclei3.android:nuclei-android:$nuclei3_version") {
exclude group: "com.android.support"
exclude group: "com.google.android.gms"
exclude group: "com.google.android.exoplayer"
exclude group: "com.squareup.okhttp3"
}
implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version"
androidTestImplementation("com.squareup.okhttp3:mockwebserver:$okhttp_version") {
exclude group: "com.android.support", module: "multidex"
}
implementation "com.squareup.sqldelight:android-driver:$sqldelight_version"
implementation "com.android.support:multidex:$support_multidex_version"
// play services
implementation "com.google.android.gms:play-services-auth:$play_services_auth_version"
implementation "com.google.android.gms:play-services-maps:$play_services_maps_version"
implementation "com.google.android.gms:play-services-cast-framework:$play_services_cast_version"
implementation "com.google.android.gms:play-services-base:$play_services_base_version"
// android support libraries
implementation "com.android.support:appcompat-v7:$support_lib_version"
implementation "com.android.support:support-v4:$support_lib_version"
implementation "com.android.support:design:$support_lib_version"
implementation "com.android.support:cardview-v7:$support_lib_version"
implementation "com.android.support:recyclerview-v7:$support_lib_version"
implementation "com.android.support:gridlayout-v7:$support_lib_version"
implementation "com.android.support:palette-v7:$support_lib_version"
implementation "com.android.support:customtabs:$support_lib_version"
implementation "com.android.support:mediarouter-v7:$support_lib_version"
implementation "com.android.support:support-dynamic-animation:$support_lib_version"
implementation "com.android.support.constraint:constraint-layout:$constraint_layout_version"
implementation "com.android.support:preference-v14:$support_lib_version"
// firebase
implementation "com.google.firebase:firebase-messaging:$firebase_messaging_version"
implementation "com.google.firebase:firebase-invites:$firebase_invites_version"
implementation "com.google.firebase:firebase-appindexing:$firebase_app_indexing_version"
implementation "com.google.firebase:firebase-perf:$firebase_perf_version"
// appboy
//implementation files("libs/appboy-mini.jar")
implementation "com.appboy:android-sdk-base:$appboy_version@aar"
// apps flyer
implementation "com.appsflyer:af-android-sdk:$apps_flyer_version@aar"
// glide image library
implementation ("com.github.bumptech.glide:glide:$glide_version") {
exclude group: "com.android.support"
}
// glide okhttp module
implementation ("com.github.bumptech.glide:okhttp-integration:$glide_version") {
exclude group: "com.squareup.okhttp3", module: "okhttp"
}
// facebook support libraries
implementation "com.facebook.android:facebook-android-sdk:$facebook_version"
// crashlytics
implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics_version@aar") {
transitive = true
}
// dagger
implementation("com.google.dagger:dagger:$dagger_version") {
exclude group: "com.google.code.findbugs"
}
implementation("com.google.dagger:dagger-android:$dagger_version") {
exclude group: "com.google.code.findbugs"
}
implementation("com.google.dagger:dagger-android-support:$dagger_version") {
exclude group: "com.google.code.findbugs"
}
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
// arch apt
kapt "android.arch.lifecycle:compiler:$app_arch_version"
kapt "android.arch.persistence.room:compiler:$app_arch_version"
// branch
implementation "io.branch.sdk.android:library:$branch_version"
// Testing-only dependencies
androidTestImplementation project(":modules:tests")
androidTestImplementation "androidx.test:core:$android_test_core"
androidTestImplementation "androidx.test:runner:$android_test_runner"
androidTestImplementation "androidx.test.espresso:espresso-core:$android_espresso_core"
}
Я также рассмотрел эту проблему здесь - не уверен, что она связана, но звучит похоже.
Может кто-нибудь сказать мне, что здесь происходит?Спасибо за помощь.