1

I have a problem with AndroidX SafeArgs Gradle Plugin and AGP 7.1.0, default one for Android Builds. I've tried to use SafeArgs 2.5.0-aplha01 which sholud be compliant with AGP 7.1.0, but it caused a lot of duplicate class entires (list attached below). Then I've tried to use SNAPSHOT builds of AndroidX, but 2.5.0-SNAPSHOT produces the same issues. Meanwhile I've also tried with no luck jetifier or excluding conflicted packages. It happens even to a blank Android projects. How to solve it and build the app? Take a look at below gradle scripts of empty Android project, which cause described problem:

settings.gradle

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://androidx.dev/snapshots/builds/8148601/artifacts/repository' }
    }
}
rootProject.name = "Test_d"
include ':app'

build.gradle (:app)

plugins {
    id 'com.android.application'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.test_d"
        minSdk 21
        targetSdk 31
        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
    }
}

dependencies {
//    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-SNAPSHOT'
//    testImplementation 'junit:junit:4.13.2'
//    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
//    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.1.0' apply false
    id 'com.android.library' version '7.1.0' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

List of exampled duplicate class errors

Duplicate class javax.activation.ActivationDataFlavor found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandInfo found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandInfo$Beans found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandInfo$Beans$1 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandMap found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandObject found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataContentHandler found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataContentHandlerFactory found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataHandler found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataHandler$1 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataHandlerDataSource found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataSource found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.DataSourceDataContentHandler found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.FileDataSource found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.FileTypeMap found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MailcapCommandMap found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MailcapCommandMap$1 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MimeType found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MimeTypeParameterList found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MimeTypeParseException found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MimetypesFileTypeMap found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.MimetypesFileTypeMap$1 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.ObjectDataContentHandler found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$1 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$2 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$3 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$4 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$5 found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.URLDataSource found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.UnsupportedDataTypeException found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.xml.namespace.QName found in modules xml-apis-1.4.01 (xml-apis:xml-apis:1.4.01) and xpp3-1.1.4c (xpp3:xpp3:1.1.4c)
Duplicate class org.jetbrains.kotlin.build.BuildMetaInfo found in modules kotlin-build-common-1.6.10 (org.jetbrains.kotlin:kotlin-build-common:1.6.10) and kotlin-compiler-embeddable-1.6.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.6.10)
Blady214
  • 729
  • 6
  • 19

1 Answers1

-1

I had the same problem just remove

implementation 'androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-SNAPSHOT' from the gradle and your problem should be fixed. I guess safe-args is already in another library and they are overlapping, but I am not sure if you will be able to use safe-args anymore.

  • 2
    As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Vikram Parimi Sep 09 '22 at 10:15