मैं आर्किटेक्चर घटकों से वर्कमैनेजर का उपयोग करने की कोशिश कर रहा हूं। मैंने कंपाइलSdkVersion और targetSdkVersion को 27 से 28 तक अपग्रेड किया है। ग्रेडल सिंक सफलतापूर्वक किया गया है। लेकिन बिल्ड-टाइम एरर पॉप अप होता रहता है। android.support पुस्तकालय 'android.support:design' के कारण संस्करण 28.0.0-rc02 का उपयोग कर रहे हैं।

मैंने 'proguard/androidx-annotations.pro' को बाहर करने के लिए पैकेजिंगऑप्शन जोड़ने का प्रयास किया है। लेकिन यह मदद नहीं की। लेकिन इस बार मुझे एक अलग त्रुटि संदेश मिला:

Program type already present: com.google.common.util.concurrent.ListenableFuture

मैं समझ नहीं पा रहा था कि क्या गलत हो रहा है।

बिल्ड.ग्रेडल:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.apps.test"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 5
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    signingConfigs {
        release
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release

            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            resValue "bool", "enableFirebase", "true"

        }
        debug {
            minifyEnabled false
            resValue "bool", "enableFirebase", "false"

        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
//    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:design:28.0.0-rc02'
    implementation 'com.android.support:recyclerview-v7:28.0.0-rc02'
    implementation 'com.android.support:support-v4:28.0.0-rc02'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:multidex:1.0.3'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'com.google.android.gms:play-services-auth:16.0.0'
    implementation 'com.google.firebase:firebase-firestore:17.1.0'
    implementation 'com.firebaseui:firebase-ui-firestore:4.1.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'

    //Arch
    implementation 'android.arch.core:runtime:1.1.1'
    implementation 'android.arch.core:common:1.1.1'
    implementation 'com.google.code.gson:gson:2.8.5'

    implementation "android.arch.work:work-runtime-ktx:1.0.0-alpha09"
//    implementation "android.arch.work:work-firebase:1.0.0-alpha09"
}

apply plugin: 'com.google.gms.google-services'

संपादित करें: मैंने पैकेजिंगऑप्शन को ग्रेडेल में लागू किया है यहाँ की तरह

packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
}

लेकिन इस बार मुझे 5 अतिरिक्त त्रुटियां मिलीं:

1:

Program type already present: com.google.common.util.concurrent.ListenableFuture
Message{kind=ERROR, text=Program type already present: com.google.common.util.concurrent.ListenableFuture, sources=[Unknown source file], tool name=Optional.of(D8)}

2:

Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...

3:

Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...

4:

Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete

5:

Caused by: com.android.tools.r8.utils.AbortException
19
Orcun Sevsay 23 सितंबर 2018, 18:56

3 जवाब

सबसे बढ़िया उत्तर

WorkManager 1.0.0-alpha09 रिलीज नोट के अनुसार:

ज्ञात समस्या

यदि आप निम्न समस्या का सामना करते हैं: "OS स्वतंत्र पथ 'META-INF/proguard/androidx-annotations.pro' के साथ एक से अधिक फ़ाइलें मिलीं", कृपया निम्न को अपनी ग्रेडल फ़ाइल में अस्थायी समाधान के रूप में रखें, जबकि हम इसे ठीक करते हैं अल्फा 10 में समस्या:

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

संपादित करें: आपकी अतिरिक्त त्रुटियां इस समस्या के कारण हैं:

यह उद्देश्य पर किया जाता है: https://groups.google.com/forum /#!topic/guava-announce/Km82fZG68Sw

अमरूद की नई रिलीज जल्द ही तैयार हो जाएगी, जिससे वह समस्या अपने आप हल हो जाएगी।

अभी के लिए आप अपनी ग्रेडल फ़ाइल में "com.google.guava:listenablefuture" को बाहर कर सकते हैं:

implementation("android.arch.work:work-runtime:1.0.0-alpha09") {
    exclude group: 'com.google.guava', module: 'listenablefuture' 
}
34
ianhanniballake 23 सितंबर 2018, 22:06

यदि आपके पास अमरूद v27 और वर्कमैनेजर के नवीनतम संस्करण के साथ एक परियोजना है तो सब कुछ ठीक काम करता है। मैंने अभी इसे आजमाया है और यह मेरी परियोजना को ठीक करता है।

यह ठीक बनाता है:

dependencies {
   implementation 'android.arch.work:work-runtime:1.0.0-beta01'
   implementation 'com.google.guava:guava:27.0.1-android'
}
3
karel 7 मार्च 2019, 05:46

रिलीज नोट्स का कहना है कि यह बग 1.0.0-alpha10 में तय किया गया था:

कंप्यूटर प्रोग्राम या प्रणाली में बग को दूर करना

डुप्लिकेट androidx-annotations.pro फ़ाइलों के संबंध में Alpha09 से ज्ञात समस्या को ठीक किया गया। आप अपनी ग्रेडल फ़ाइल से 'META-INF/proguard/androidx-annotations.pro' को हटाकर पिछले रिलीज़ नोटों से वैकल्पिक हल निकाल सकते हैं।

स्रोत


लेकिन... किसी कारण से मैं अभी भी 1.0.0-alpha11 संस्करण में यह त्रुटि देख रहा हूं।

इसके लिए एक समाधान, सुनने योग्य भविष्य मॉड्यूल को कार्य-रनटाइम घटक से बाहर करना है जैसा कि @ianhanniballake ने अपने उत्तर में बताया है।

और भी work-firebase घटक में उसी मॉड्यूल को बाहर करें जैसा @Zack ने टिप्पणी अनुभाग में बताया है।


बिल्ड.ग्रेडल

    /*
    |--------------------------------------------------------------------------
    | WorkManager
    |--------------------------------------------------------------------------
    */

    def work_version = "1.0.0-alpha11"

    implementation("android.arch.work:work-runtime:$work_version") {
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }

    // optional - Firebase JobDispatcher support
    implementation("android.arch.work:work-firebase:$work_version") {
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }

    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
0
chebaby 12 नवम्बर 2018, 17:37