AndroidX क्या है?


255

मैं एंड्रॉइड के एक कमरे के पुस्तकालय के बारे में पढ़ रहा हूं। मैं देखता हूं कि उन्होंने पैकेज androidको बदल दिया है androidx। मुझे वह समझ नहीं आया। कोई समझा सकता है, कृपया?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

यहां तक ​​कि यह androidपैकेज के साथ भी उपलब्ध है ।

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • androidxइसके बजाय नए समर्थन पुस्तकालयों की पैकेजिंग की क्या आवश्यकता थी android?
  • मौजूदा परियोजनाओं में मामले का उपयोग करें और कारकों को प्रभावित करें।

4
डेवलपर पढ़िए ।android.com/ topic/ lbooks/ support- library/…androidx.*समर्थन पुस्तकालयों के लिए पैकेज पदानुक्रम है। जब हम युगों androidx(जैसे वास्तुकला घटक, अन्य समर्थन पुस्तकालय) के युग में आते हैं, तो वे सभी एक ही पैकेज में आएंगे ।
ADM

3
क्या तुम बिल्कुल समझ में नहीं आया? उन्होंने पैकेज क्यों बदला?
रोहित

@ADM ने androidxCORE से पैकेज पर स्विच क्यों किया android
खेमराज

2
उन्होंने सिर्फ सादगी के लिए पैकेज संरचना को फिर से डिज़ाइन किया। यदि आप एक नज़र रखना चाहते हैं तो IO 2018 में भी इसकी घोषणा की गई थी। Thx
ADM

जवाबों:


335

AndroidX - Android एक्सटेंशन लाइब्रेरी

से AndroidX प्रलेखन

हम यह स्पष्ट करने के लिए एक नई पैकेज संरचना तैयार कर रहे हैं कि कौन से पैकेज एंड्रॉइड ऑपरेटिंग सिस्टम के साथ बंडल किए गए हैं, और जो आपके ऐप के एपीके के साथ पैक किए गए हैं। आगे जा रहे हैं, एंड्रॉइड। * पैकेज पदानुक्रम ऑपरेटिंग सिस्टम के साथ जहाज करने वाले एंड्रॉइड पैकेज के लिए आरक्षित होगा। अन्य पैकेज नए androidx में जारी किए जाएंगे। * पैकेज पदानुक्रम AndroidX पुस्तकालय के हिस्से के रूप में।

AndroidX की जरूरत है

AndroidX पैकेज नामों को और अधिक स्पष्ट करने के लिए एक पुन: डिज़ाइन की गई लाइब्रेरी है। तो अब से Android पदानुक्रम केवल Android डिफ़ॉल्ट कक्षाओं के लिए होगा, जो android ऑपरेटिंग सिस्टम के साथ आता है और अन्य पुस्तकालय / निर्भरता androidx (अधिक समझ में आता है) का हिस्सा होगा । तो अब से Androidx में सभी नए विकास को अपडेट किया जाएगा।

com.android.support। **: androidx।
com.android.support : appcompat-v7 : androidx.appcompat: appcompat com.android.support:recyclerview-v7: androidx.recyclerview: recyclerview com.android.support:design: com.google.android.material: सामग्री

AndroidX पैकेज के लिए पूरा आर्टिफिशियल मैपिंग

AndroidX अर्थ-वर्जन का उपयोग करता है

पहले, support libraryएसडीके संस्करण का उपयोग करता था लेकिन एंड्रॉइड एक्स का उपयोग करता है Semantic-version। यह 28.0.0 → 1.0.0 से फिर से संस्करण में जा रहा है।

वर्तमान परियोजना को कैसे स्थानांतरित करना है

एंड्रॉइड स्टूडियो 3.2 (सितंबर 2018) में, मौजूदा प्रोजेक्ट को माइग्रेट करने का एक सीधा विकल्प है AndroidX। यह रिफैक्टर सभी पैकेजों को स्वचालित रूप से बदल देता है।

इससे पहले कि आप माइग्रेट करें, यह दृढ़ता से आपके प्रोजेक्ट का बैकअप लेने के लिए अनुशंसित है।

मौजूदा परियोजना

  • Android Studio> Refactor Menu> AndroidX में माइग्रेट करें ...
  • यह विश्लेषण करेगा और नीचे में Refractor विंडो खोलेगा। किए जाने वाले परिवर्तनों को स्वीकार करें।

छवि

नया काम

ये झंडे अपने में रखो gradle.properties

android.enableJetifier=true
android.useAndroidX=true

बराबर AndroidX पैकेज के लिए @ लाइब्रेरी मैपिंग की जाँच करें ।

AndroidX पर माइग्रेट के आधिकारिक पेज की जाँच करें

जेटिफायर क्या है?

पलायन के कीड़े

  • यदि आप ऐप बनाते हैं, और माइग्रेट करने के बाद कुछ त्रुटियां पाते हैं, तो आपको उन छोटी त्रुटियों को ठीक करने की आवश्यकता है। आप वहां अटकेंगे नहीं, क्योंकि यह आसानी से तय किया जा सकता है।
  • 3 पार्टी लाइब्रेरियों को डायरेक्टरी में AndroidX में कनवर्ट नहीं किया जाता है, लेकिन वे Jetifier द्वारा रन टाइम में कन्वर्ट हो जाते हैं , इसलिए कंपाइल टाइम एरर्स की चिंता न करें, आपका ऐप पूरी तरह से चलेगा।

समर्थन 28.0.0 अंतिम रिलीज है?

से Android समर्थन संशोधन 28.0.0

यह android.support पैकेजिंग के तहत अंतिम फीचर रिलीज़ होगा , और डेवलपर्स को AndroidX 1.0.0 पर माइग्रेट करने के लिए प्रोत्साहित किया जाता है

इसलिए AndroidX के साथ जाएं, क्योंकि Android अब से केवल Androidx पैकेज अपडेट करेगा।

आगे की पढाई

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html


2
आपसे सुनने के लिए @androidmalin खुशी है - इस जानकारी ने आपकी मदद की :)
खेमराज

किन परिस्थितियों में आप को सक्षम करना चाहिए।
मार्क

1
@ मर्क enableJetifier=falseडिफ़ॉल्ट मान है। जब आप इसे सेट नहीं करते हैं तो यह गलत है। इसका मतलब है कि आपकी कोई भी लाइब्रेरी AndroidX पर दोबारा नहीं डाली जाएगी।
खेमराज

4
Android स्टूडियो का माइग्रेट खराब तरीके से काम कर रहा है। मुझे मैन्युअल रूप से सैकड़ों फ़ाइलों को ठीक करना था ... मैं कोड को ठीक करने के लिए अधिक समय व्यतीत करता हूं क्योंकि Google टूल परिवर्तनों के कारण वास्तव में उस कोड को प्रोग्राम करता है जो मायने रखता है ... sigh
LearningPath

1
अब यह (3.3) कहा जाता हैMigrate to AndroidX
डेल

32

प्रलेखन के आधार पर :

Androidx यह स्पष्ट करने के लिए नया पैकेज संरचना है कि कौन से पैकेज एंड्रॉइड ऑपरेटिंग सिस्टम के साथ बंडल किए गए हैं, और जो आपके ऐप के एपीके के साथ पैक किए गए हैं। आगे जा रहे हैं, एंड्रॉइड। * पैकेज पदानुक्रम एंड्रॉइड पैकेज के लिए आरक्षित होगा जो ऑपरेटिंग सिस्टम के साथ जहाज करते हैं; अन्य पैकेज नए androidx में जारी किए जाएंगे। * पैकेज पदानुक्रम।

री-डिजाइन पैकेज संरचना छोटे और अधिक केंद्रित पुस्तकालयों को प्रोत्साहित करने के लिए है। आप यहाँ आर्टिफिशियल मैपिंग के बारे में विवरण पाते हैं

"V7" नाम से समर्थन लाइब्रेरी (घटक और पैकेज पिछड़े संगतता के लिए) होते हैं, जब न्यूनतम एसडीके स्तर 14 समर्थित होता है, नया नामकरण प्लेटफ़ॉर्म के साथ बंडल किए गए एपीआई और ऐप डेवलपर्स के लिए पुस्तकालयों के बीच के विभाजन को समझने के लिए स्पष्ट करता है जो उपयोग किया जाता है Android के विभिन्न संस्करणों पर। आप अधिक विवरण के लिए आधिकारिक घोषणा का उल्लेख कर सकते हैं ।


22

AndroidX एक ओपन-सोर्स प्रोजेक्ट है, जिसे एंड्रॉइड टीम Jetpack के भीतर विकसित, परीक्षण, पैकेज, संस्करण और रिलीज़ लाइब्रेरी के लिए उपयोग करती है ।

AndroidX मूल Android समर्थन लाइब्रेरी के लिए एक बड़ा सुधार है । सपोर्ट लाइब्रेरी की तरह, एंड्रॉइड ओएस से एंड्रॉइड के जहाज अलग-अलग होते हैं और एंड्रॉइड रिलीज़ पर बैकवर्ड-संगतता प्रदान करते हैं। AndroidX पूरी तरह से फीचर लाइब्रेरी और नई लाइब्रेरी प्रदान करके सपोर्ट लाइब्रेरी की जगह लेता है।

AndroidX में निम्नलिखित विशेषताएं शामिल हैं:

  • AndroidX के सभी पैकेज स्ट्रिंग नेमेक्स के साथ शुरू होने वाले एक सुसंगत नेमस्पेस में रहते हैं। समर्थन लाइब्रेरी पैकेज को संबंधित androidx। * पैकेज में मैप किया गया है। सभी पुराने वर्गों की पूर्ण मैपिंग और नए लोगों के लिए कलाकृतियों का निर्माण करने के लिए, पैकेज रीफैक्टरिंग पेज देखें।

  • सपोर्ट लाइब्रेरी के विपरीत, AndroidX पैकेज अलग से बनाए और अपडेट किए जाते हैं। Androidx पैकेज Semantic Versioningसंस्करण 1.0.0 के साथ सख्त शुरुआत का उपयोग करते हैं । आप अपने प्रोजेक्ट में AndroidX लाइब्रेरी को स्वतंत्र रूप से अपडेट कर सकते हैं।

  • सभी नए समर्थन लाइब्रेरी विकास AndroidX लाइब्रेरी में होंगे। इसमें मूल समर्थन लाइब्रेरी कलाकृतियों का रखरखाव और नए जेटपैक घटकों की शुरूआत शामिल है।

AndroidX का उपयोग करना

किसी मौजूदा प्रोजेक्ट को माइग्रेट करने का तरीका जानने के लिए AndroidX पर माइग्रेट करना देखें ।

यदि आप एक नई परियोजना में एंड्रॉइड का उपयोग करना चाहते हैं, तो आपको एसडीके को एंड्रॉइड 9.0 (एपीआई स्तर 28) या उच्चतर पर सेट करने की आवश्यकता है और अपनी gradle.propertiesफाइल में सही करने के लिए निम्न दोनों एंड्रॉइड ग्रैगल प्लगइन फ्लैग सेट करें ।

  • android.useAndroidX: जब सही पर सेट किया जाता है, तो एंड्रॉइड प्लगइन एक समर्थन लाइब्रेरी के बजाय उपयुक्त एंड्रॉइड लाइब्रेरी का उपयोग करता है। यदि यह निर्दिष्ट नहीं है तो ध्वज डिफ़ॉल्ट रूप से गलत है।

  • android.enableJetifier: जब सही पर सेट किया जाता है, तो एंड्रॉइड प्लगइन स्वचालित रूप से अपने बायनेरिज़ को फिर से लिखकर एंड्रॉइड एक्स का उपयोग करने के लिए मौजूदा तीसरे पक्ष के पुस्तकालयों को स्थानांतरित कर देता है। यदि यह निर्दिष्ट नहीं है तो ध्वज डिफ़ॉल्ट रूप से गलत है।

के लिए विरूपण साक्ष्य मैपिंग देखना यह


14

यह लेख एंड्रॉइड जेटपैक: एंड्रॉइड की सहायता लाइब्रेरी के लिए हाल की घोषणाओं का क्या मतलब है? इसे अच्छी तरह समझाता है

आज, कई लोग समर्थन लाइब्रेरी को एंड्रॉइड ऐप के विकास का एक अनिवार्य हिस्सा मानते हैं, इस बिंदु पर जहां यह Google Play स्टोर में 99 प्रतिशत ऐप्स द्वारा उपयोग किया जाता है। हालाँकि, जैसा कि सपोर्ट लाइब्रेरी का विकास हुआ है, लाइब्रेरी के नामकरण सम्मेलन के आस-पास विसंगतियां पैदा हो गई हैं।

प्रारंभ में, प्रत्येक पैकेज के नाम ने उस पैकेज द्वारा समर्थित न्यूनतम एपीआई स्तर का संकेत दिया, उदाहरण के लिए, समर्थन-वी 4। हालाँकि, 26.0.0समर्थन लाइब्रेरी के संस्करण ने न्यूनतम API को 14 तक बढ़ा दिया है, इसलिए आज पैकेज के कई नामों का न्यूनतम समर्थित एपीआई स्तर से कोई लेना-देना नहीं है। जब support-v4 और support-v7 संकुल दोनों का न्यूनतम एपीआई 14 है, तो यह देखना आसान है कि लोग भ्रमित क्यों होते हैं!

इस भ्रम को दूर करने के लिए, Google वर्तमान में समर्थन लाइब्रेरी को नए Android एक्सटेंशन लाइब्रेरी (AndroidX) पैकेज संरचना में बदल रहा है। AndroidX में सरलीकृत पैकेज नामों के साथ-साथ मावेन ग्रुपआईड्स और आर्टिफ़िशियड्स होंगे जो प्रत्येक पैकेज की सामग्री और इसके समर्थित एपीआई स्तरों को बेहतर ढंग से दर्शाते हैं।

वर्तमान नामकरण सम्मेलन के साथ, यह भी स्पष्ट नहीं है कि कौन से पैकेज एंड्रॉइड ऑपरेटिंग सिस्टम के साथ बंडल किए गए हैं, और जो आपके एप्लिकेशन के एपीके (एंड्रॉइड पैकेज किट) के साथ पैक किए गए हैं । इस भ्रम को दूर करने के लिए, सभी unbundled पुस्तकालयों को AndroidX के Androidx पर ले जाया जाएगा। * नेमस्पेस, जबकि android। * पैकेज पदानुक्रम उन संकुल के लिए आरक्षित होगा जो Android ऑपरेटिंग सिस्टम के साथ जहाज करते हैं ।


12

बस कुछ बिट्स मेरी तरफ से सभी उपलब्ध उत्तरों के अतिरिक्त हैं

AndroidX की जरूरत है

  1. जैसा कि @KhemRaj द्वारा आश्चर्यजनक जवाब में कहा गया है,

वर्तमान नामकरण सम्मेलन के साथ, यह स्पष्ट नहीं है कि कौन से पैकेज एंड्रॉइड ऑपरेटिंग सिस्टम के साथ बंडल किए गए हैं , और जो आपके एप्लिकेशन के एपीके ( एंड्रॉइड पैकेज किट ) के साथ पैक किए गए हैं । इस भ्रम को दूर करने के लिए, सभी unbundled पुस्तकालयों को AndroidX के Androidx। * नेमस्पेस पर ले जाया जाएगा , जबकि android। * संकुल पदानुक्रम उन संकुल के लिए आरक्षित होगा जो Android ऑपरेटिंग सिस्टम के साथ जहाज करते हैं।

  1. इससे अलग कुछ,

    प्रारंभ में, प्रत्येक पैकेज के नाम ने उस पैकेज द्वारा समर्थित न्यूनतम एपीआई स्तर का संकेत दिया, उदाहरण के लिए समर्थन-वी 4 । हालाँकि, समर्थन लाइब्रेरी के संस्करण 26.0.0 ने न्यूनतम एपीआई को 14 तक बढ़ा दिया है , इसलिए आज पैकेज के कई नामों का न्यूनतम समर्थित एपीआई स्तर से कोई लेना-देना नहीं है। जब support-v4 और support-v7 संकुल दोनों का न्यूनतम एपीआई 14 है, तो यह देखना आसान है कि लोग भ्रमित क्यों होते हैं! तो अब AndroidX के साथ, एपीआई स्तर पर निर्भरता नहीं है।

एक और महत्वपूर्ण परिवर्तन यह है कि AndroidX कलाकृतियां स्वतंत्र रूप से अपडेट होंगी, इसलिए आप एक बार में प्रत्येक निर्भरता को बदलने के बजाय अपनी परियोजना में अलग-अलग AndroidX पुस्तकालयों को अपडेट कर सकेंगे। उन निराशाजनक " सभी com.android.support पुस्तकालयों को सटीक एक ही संस्करण विनिर्देश का उपयोग करना चाहिए " संदेश अतीत की बात बन जाना चाहिए!


7

मुझे इस Android देव शिखर सम्मेलन के वीडियो से AndroidX के बारे में पता चला । संक्षेप है -

  1. कोई और अधिक समर्थन लायब्रेरी नहीं: समर्थन लाइब्रेरी नेमस्पेस के तहत Google द्वारा Android समर्थन लाइब्रेरी को कभी भी बनाए नहीं रखा जाएगा। इसलिए यदि आप सपोर्ट लाइब्रेरी में बग का समाधान ढूंढना चाहते हैं तो आपको अपने प्रोजेक्ट को AndroidX में माइग्रेट करना होगा
  2. बेहतर पैकेज प्रबंधन: मानकीकृत और स्वतंत्र संस्करण के लिए। क्योंकि पिछले समर्थन पुस्तकालय संस्करण बहुत भ्रामक था। यह आपको "All com.android.support पुस्तकालयों के सटीक समान संस्करण विनिर्देशन" संदेश का उपयोग करना होगा
  3. अन्य भगवान पुस्तकालयों ने AndroidX पर माइग्रेट किया है : Google play services, Firebase, Mockito 2, आदि AndroidX में माइग्रेट किए गए हैं।
  4. नई पुस्तकालयों AndroidX विरूपण साक्ष्य का उपयोग कर प्रकाशित किया जाएगा: सभी लाइब्रेरी एंड्रॉइड जेटपैक जैसे एंड्रॉइड नेमस्पेस में होंगी

4

यह समर्थन के AppCompat संस्करणों के समान है, लेकिन इसमें v4 और v7 संस्करणों की कम गड़बड़ी है, इसलिए यह Android XML तत्वों के विभिन्न घटकों का उपयोग करने में बहुत मदद करता है।


4

androidxके support libraryबाद प्रतिस्थापित करेगा 28.0.0। आपको इसका उपयोग करने के लिए अपने प्रोजेक्ट को माइग्रेट करना चाहिए। androidxका उपयोग करता है Semantic Versioning। का उपयोग करते हुएAndroidXलाइब्रेरी नाम और पैकेज नाम में प्रस्तुत किए गए संस्करण द्वारा को भ्रमित नहीं किया जाएगा। जीवन आसान हो जाता है

[AndroidX और समर्थन संगतता]


3

AndroidX एक ओपन-सोर्स प्रोजेक्ट है जिसका उपयोग एंड्रॉइड टीम Jetpack के भीतर विकसित, परीक्षण, पैकेज, संस्करण और रिलीज़ लाइब्रेरी के लिए करती है।

घंटों संघर्ष करने के बाद, मैंने इसे एप्लिकेशन / बिल्ड.gradle के भीतर शामिल करके हल किया:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

इन झंडों को अपनी gradle.properties में डालें

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

एंड्रॉइड स्टूडियो पर माइग्रेट करते समय, एप्लिकेशन / ग्रेड फ़ाइल स्वचालित रूप से मानक पुस्तकालय से सुधार पुस्तकालय कार्यान्वयन के साथ अपडेट की जाती है

इसका संदर्भ लें: https://developer.android.com/jetpack/androidx/migrate


0

Android विभिन्न पुस्तकालय सेटों की एक जोड़ी प्रदान करता है। एक को Android समर्थन लाइब्रेरी कहा जाता है, और दूसरे को AndroidX कहा जाता है। "एंड्रॉइड का उपयोग करें। * कलाकृतियों" का चयन करना इंगित करता है कि हम AndroidX का उपयोग करना चाहते हैं।

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