क्या मैं लाइब्रेरी का उपयोग कर सकता हूं जो एंड्रॉइड परियोजनाओं के साथ एंड्रॉइड समर्थन का उपयोग करता है।


96

मुझे पता है, androidx और समर्थन निर्भरता के कारण multidex त्रुटि हम एक ही समय में androidx और android समर्थन का उपयोग नहीं कर सकते हैं। तो मैं पूरी तरह से androidx के लिए पलायन। लेकिन मेरी निर्भरता में से एक ने एंड्रॉइड सपोर्ट "लोटी" का इस्तेमाल किया।

हम उपरोक्त स्थिति में क्या कर सकते हैं? क्या मुझे अपने प्रोजेक्ट से 'लोटी' को हटा देना चाहिए।

नीचे मेरा वर्गीकृत है

defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }

    ext{
    lottieVersion = "2.5.4"
}


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    def androidx = "1.0.0-rc01"
    api "androidx.constraintlayout:constraintlayout:1.1.2"
    api "androidx.appcompat:appcompat:$androidx"
    api "androidx.recyclerview:recyclerview:$androidx"
    api "androidx.cardview:cardview:$androidx"
    api "androidx.core:core-ktx:$androidx"
    api "com.google.android.material:material:1.0.0-rc01"
    implementation "com.google.code.gson:gson:2.8.5"
    implementation "androidx.multidex:multidex:2.0.0"
    implementation "com.airbnb.android:lottie:$lottieVersion"
    }

जवाबों:


132

आप Jetifierअपने प्रोजेक्ट पर सक्षम कर सकते हैं , जो मूल रूप Android Support Libraryसे AndroidX-ऑन के साथ आपके प्रोजेक्ट निर्भरता में निर्भरता का आदान-प्रदान करेगा । (उदाहरण के लिए आपका आकर्षक निर्भरता समर्थन से AnroidX में बदल जाएगा)

एंड्रॉइड स्टूडियो डॉक्यूमेंटेशन ( https://developer.android.com/studio/preview/features/ ) से:

एंड्रॉइड ग्रैगल प्लगइन निम्नलिखित वैश्विक झंडे प्रदान करता है जिन्हें आप अपनी gradle.properties फ़ाइल में सेट कर सकते हैं:

  • android.useAndroidX: जब यह सच हो जाता है, तो यह ध्वज इंगित करता है कि आप अभी से AndroidX का उपयोग शुरू करना चाहते हैं। यदि ध्वज अनुपस्थित है, तो एंड्रॉइड स्टूडियो व्यवहार करता है जैसे कि ध्वज को झूठे पर सेट किया गया था।
  • android.enableJetifier: जब इसे सही पर सेट किया जाता है, तो यह ध्वज इंगित करता है कि आप टूल सपोर्ट (एंड्रॉइड ग्रैगल प्लगइन से) स्वचालित रूप से मौजूदा थर्ड-पार्टी लाइब्रेरी को रूपांतरित करना चाहते हैं जैसे कि वे AndroidX के लिए लिखे गए थे। यदि ध्वज अनुपस्थित है, तो एंड्रॉइड स्टूडियो व्यवहार करता है जैसे कि ध्वज को झूठे पर सेट किया गया था।

Jetifier के लिए पूर्व शर्त:

  • आपको कम से कम उपयोग करना होगा Android Studio 3.2

जेटफ़ायर को सक्षम करने के लिए, उन दो पंक्तियों को अपनी gradle.propertiesफ़ाइल में जोड़ें:

android.useAndroidX=true
android.enableJetifier=true

अंत में, कृपया AndroidX के रिलीज़ नोट देखें, क्योंकि jetifierअभी भी कुछ पुस्तकालयों (जैसे डैगर एंड्रॉइड) के साथ कुछ समस्याएं हैं: https://developer.android.com/topic/lbooks/support-library/androidx-rn


मेरी परियोजना कई पुस्तकालयों का उपयोग करती है, उनमें से कुछ समर्थन पुस्तकालय का उपयोग करते हैं जबकि कुछ androidx का उपयोग करते हैं। मैं अपनी परियोजना में दोनों पुस्तकालयों का उपयोग कैसे करूं?
हिरेन दबी

1
@ धीरेन दाभी क्या आप अपने सेटअप के लिए एक नया प्रश्न बना सकते हैं, यदि समाधान प्रस्ताव आपके लिए काम नहीं कर रहा है? आपके सेटअप के बारे में अधिक जानकारी के बिना उत्तर खोजना मुश्किल है।
क्रिस्टोफर

57

मैन्युअल रूप से मुझे जोड़ना android.useAndroidX=trueऔर android.enableJetifier=trueकठिन समय देना। क्योंकि यह कुछ त्रुटि या फेंक रहा है Suggestion: add 'tools:replace="android:appComponentFactory"' to <application>

प्रोजेक्ट में जेट-फायर को सक्षम करने के लिए एंड्रॉइड स्टूडियो में विकल्प है

अपने प्रोजेक्ट का चयन करें ---> राइट क्लिक करें

app ----> रिफ्लेक्टर ----> AndroidX पर माइग्रेट करें

नीचे दी गई छवि में दिखाया गया है: -

यहाँ छवि विवरण दर्ज करें

AndroidX पर माइग्रेट पर क्लिक करने के बाद ।

यह आपकी परियोजना के लिए पुष्टि और बैक अप के लिए पूछेगा।

यहाँ छवि विवरण दर्ज करें

और अंतिम चरण यह आपको रिफ्लेक्टर करने के लिए कहेगा।

यहाँ छवि विवरण दर्ज करें

Refactor करने के बाद आपके gradle.properties की जाँच करें android.useAndroidX=trueऔर android.enableJetifier=true। यदि वे नहीं हैं तो इन दो लाइनों को अपनी gradle.properties फ़ाइल में जोड़ें:

android.useAndroidX=true
android.enableJetifier=true

नोट: - एंड्रॉइड स्टूडियो का उपयोग करके अपग्रेड करना, यह विकल्प काम करता है यदि आपके पास एंड्रॉइड स्टूडियो 3.2 और आगे है। इसकी जाँच करें


1
अच्छा सुझाव है, लेकिन एंड्रॉइड स्टूडियो का उपयोग करके अपग्रेड करने वाले लोगों के लिए सिर्फ एक साइड नोट, यह विकल्प काम करता है यदि आपके पास एंड्रॉइड स्टूडियो 3.2 और आगे है। इस डेवलपर की
AB

21

आपको चिंता करने की आवश्यकता नहीं है

बस अपने projet में Jetifier सक्षम करें।

यह रन टाइम में आपकी निर्भरता के सभी समर्थन पुस्तकालयों को AndroidX में परिवर्तित कर देगा (आपके पास संकलन समय त्रुटियाँ हो सकती हैं, लेकिन ऐप चलेगा)।


3
gradle.properties को मेरी फाइलों में नहीं मिला, खुद बनाया
FindOutIslamNow

वास्तव में, एक सकरात्मक निर्भरता + ग्रेडल कैश काम नहीं कर सकता है, भले android.enableJetifier=trueही ऐसा हुआ हो, मुझे लगता है कि मैन्युअल रूप jetifier-standaloneसे 3-पार्टी आरा का उपयोग करना, काम कर सकता है।
मोचाद्वि


1

एपीआई 29. + उपयोग AndroidX पुस्तकालयों। यदि आप API 29 का उपयोग कर रहे हैं। +, तो आप इन्हें हटा नहीं सकते। यदि आप AndroidX को हटाना चाहते हैं, तो आपको अपने SDK से पूरे 29. + API निकालने की आवश्यकता है:

एसडीके सेटिंग्स

यह ठीक काम करेगा।



0

यदि आपका प्रोजेक्ट AndroidX नहीं है (Appcompat का अर्थ है) और यह त्रुटि मिली, तो मेरे मामले प्ले-सर्विसेज-लोकेशन ("कार्यान्वयन 'com.google.android.gms: play-services-location) में निर्भरता संस्करणों को डाउनग्रेड करने का प्रयास करें। : 17.0.0 ''), मैंने com.google.android.gms पर अपग्रेड करके समस्या हल की: प्ले-सर्विसेज-लोकेशन: 16.0.0 '


0

मुझे पहले भी इस तरह की समस्या थी, यह gradle.properties फ़ाइल मौजूद नहीं थी, केवल gradle.properties.txt थी, इसलिए मैं अपने प्रोजेक्ट फ़ोल्डर में गया और मैंने gradle.properties.txt फ़ाइल की प्रतिलिपि बनाई और चिपकाई लेकिन बिना। txt का विस्तार तब इसने आखिरकार काम किया।


0

मैंने gradle.properties फ़ाइल में दो लाइनों के नीचे जोड़ा

android.useAndroidX=true
android.enableJetifier=true

तब मुझे निम्नलिखित त्रुटि मिली

error: package android.support.v7.app does not exist
import android.support.v7.app.AlertDialog;
                         ^
                         

मैंने आयातों को हटा दिया है और नीचे पंक्ति में जोड़ा गया है

import static android.app.AlertDialog.*;

और जो कक्षाएं AppCompactActivity से विस्तारित हैं, उन्होंने नीचे की रेखा को जोड़ा। (इन त्रुटियों के लिए आपको बस android स्टूडियो में alt + एंटर दबाना होगा जो आपके लिए सही लाइब्रेरी का आयात करेगा। इस तरह से आप विचारों को हल कर सकते हैं)

import androidx.appcompat.app.AppCompatActivity;

अपनी xml फ़ाइल में यदि आपने कोई प्रयोग किया है

<android.support.v7.widget.Toolbar 

से बदल दो androidx.appcompat.widget.Toolbar

फिर अपने जावा कोड में

import androidx.appcompat.widget.Toolbar;

-1

इस लाइन में टिप्पणी करें gradle.properties

android.useAndroidX सच =


ओपी पूछ रहा है कि क्या एंड्रॉइड समर्थन के साथ एंड्रॉइड का उपयोग करना संभव है। आप AndroidX
Raildex

gradle.properties पर जाएं और टिप्पणी करें
विक्रम सिंह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.