Ошибка выполнения для задачи ': app: minifyFullReleaseWithR8' - PullRequest
1 голос
/ 01 августа 2020

Я пытаюсь собрать релизную сборку с R8. В приложении много модулей. Компонент навигации используется для навигации между фрагментами. Некоторые фрагменты находятся в одном модуле, но используются в нескольких. Из-за этого 2 класса CitiesBottomDialogFragmentArgs создаются в одном каталоге. Таких классов много. В отладочной сборке такой проблемы не возникает. Как решить эту проблему?

* What went wrong:
Execution failed for task ':app:minifyFullReleaseWithR8'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete

Error: /home/mikhail/StudioProjects/android_projects/vlife_android3/loyalty/build/intermediates/runtime_library_classes_jar/release/classes.jar:com.example/profile/presentation/ui/cities/CitiesBottomDialogFragmentArgs.class, 

Type kz.viled.vlife.profile.presentation.ui.cities.CitiesBottomDialogFragmentArgs is defined multiple times: /home/mikhail/StudioProjects/android_projects/vlife_android3/loyalty/build/intermediates/runtime_library_classes_jar/release/classes.jar:com.example/profile/presentation/ui/cities/CitiesBottomDialogFragmentArgs.class, /home/mikhail/StudioProjects/android_projects/vlife_android3/profile/build/intermediates/runtime_library_classes_jar/release/classes.jar:com.example/profile/presentation/ui/cities/CitiesBottomDialogFragmentArgs.class

Gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs"
apply plugin: 'com.google.gms.google-services'

android {
   

    compileSdkVersion 29
    buildToolsVersion '29.0.3'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    defaultConfig {
        applicationId "..."
        minSdkVersion 24
        targetSdkVersion 29
        versionCode VERSION_CODE
        versionName VERSION_NAME
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
        disable 'MissingTranslation'
    }

    buildFeatures {
        dataBinding = true
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            multiDexEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.vlife
            debuggable false // In release change to false
        }
        debug {
            minifyEnabled false
            shrinkResources false
           
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "version"

    productFlavors {
        demo {
            dimension "version"
            applicationIdSuffix ".test"
            resValue "string", "app_name", "... Test"
            signingConfig signingConfigs.release
            applicationId '...'
        }
        full {
            dimension "version"
            applicationIdSuffix ".release"
            resValue "string", "app_name", "..."
            signingConfig signingConfigs.debug
            applicationId '...'
        }
    }

    dynamicFeatures = []

}

androidExtensions {
    experimental = true
}

Пробовал настраивать прогард, чтобы избавиться от дублирования. Это не помогло. Или я использовал неправильные настройки? Для каждого модуля добавил такой набор правил в proguard-rules.pro

-keep class com.crashlytics.** { *; }
-keepnames class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

-keep class com.** { *; }
-keepnames class com.** { *; }
-dontwarn com.**

-keep class javax.** { *; }
-keepnames class javax.** { *; }
-dontwarn javax.**

-keep class java.** { *; }
-keepnames class java.** { *; }
-dontwarn java.**

-keep class android.** { *; }
-keepnames class android.** { *; }
-dontwarn android.**

-keep class retrofit2.** { *; }
-keepnames class retrofit2.** { *; }
-dontwarn retrofit2.**

-keep class io.** { *; }
-keepnames class io.** { *; }
-dontwarn io.**

-keep class ru.** { *; }
-keepnames class ru.** { *; }
-dontwarn ru.**

-keep class afu.** { *; }
-keepnames class afu.** { *; }
-dontwarn afu.**

-keep class org.** { *; }
-keepnames class org.** { *; }
-dontwarn org.**

-keep class net.** { *; }
-keepnames class net.** { *; }
-dontwarn net.**


-keep class okhttp3.** { *; }
-keepnames class okhttp3.** { *; }
-dontwarn okhttp3.**


-keep class android.support.** { *; }
-keep interface android.support.** { *; }
-keep class androidx.** { *; }
-keep interface androidx.** { *; }
-keepattributes SourceFile,LineNumberTable

-dontnote com.example.profile.presentation.ui.cities.CitiesBottomDialogFragmentArgs
-dontwarn com.example.profile.presentation.ui.cities.CitiesBottomDialogFragmentArgs
-ignorewarnings com.example.profile.presentation.ui.cities.CitiesBottomDialogFragmentArgs

Обновлено

 dependencies {
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
    classpath "com.android.tools.build:gradle:4.0.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
    classpath "com.google.gms:google-services:$googleGms"

    
}
...