Що таке AndroidX?


255

Я читаю про бібліотеку кімнат Android. Я бачу, що вони змінили пакет 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
Читайте developer.android.com/topic/libraries/support-library / ... . androidx.*це ієрархія пакетів для бібліотек підтримки. Усі вони отримають той же пакет, що і ми прийшли в епоху androidx(як архітектурні компоненти, інші бібліотеки підтримки).
ADM

3
Що ти точно не зрозумів? Чому вони змінили пакет?
Rohit5k2

@ADM чому вони перейшли на androidxпакет із CORE android.
Хемрадж

2
Вони просто переробили структуру пакету заради простоти. Про це також було оголошено в IO 2018, якщо ви хочете подивитися. Thx
ADM

Відповіді:


334

AndroidX - бібліотека розширень Android

З документації на AndroidX

Ми впроваджуємо нову структуру пакетів, щоб зрозуміти, які пакунки входять в операційну систему Android, а які в пакеті APK вашого додатка. Ідучи вперед, ієрархія пакетів android. * Буде зарезервована для пакетів Android, які постачаються з операційною системою. Інші пакети будуть видані в новій ієрархії пакетів. * Як частина бібліотеки 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: recilerview com.android.support:design: com.google.android.material: матеріал

Повне відображення Artifact для пакетів AndroidX

AndroidX використовує Semantic-версію

Раніше support libraryвикористовували версію SDK, але AndroidX використовує Semantic-version. Перейде до ре-версії з 28.0.0 → 1.0.0.

Як перемістити поточний проект

В Android Studio 3.2 (вересень 2018 року) є прямий варіант переміщення існуючого проекту на AndroidX. Цей рефактори всі пакети автоматично.

Перед тим, як перейти, настійно рекомендується створити резервну копію проекту.

Існуючий проект

  • Android Studio> Меню Refactor> Перехід на AndroidX ...
  • Він проаналізує і відкриє вікно рефрактора знизу. Прийміть зміни, які потрібно зробити.

зображення

Новий проект

Покладіть ці прапори у своє gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Перевірте @ Бібліотечні відображення на рівний пакет AndroidX .

Перевірте @ Офіційна сторінка переходу на AndroidX

Що таке Jetifier?

Помилки мігрують

  • Якщо ви створюєте додаток і виявляєте деякі помилки після переміщення, вам потрібно виправити ці незначні помилки. Ви там не застрягнете, бо це можна легко виправити.
  • Сторонні бібліотеки не перетворюються на AndroidX у довіднику, але вони конвертуються під час запуску Jetifier , тому не хвилюйтесь про помилки компіляції, ваш додаток працюватиме ідеально.

Підтримка 28.0.0 - це останній реліз?

З версії Android Support версії 28.0.0

Це буде останній випуск функції під упаковкою android.support , і розробникам рекомендується перейти на AndroidX 1.0.0

Тож переходьте з AndroidX, оскільки Android відтепер оновлюватиме лише пакет Android.

Подальше читання

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

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


2
@androidmalin Радий почути від вас - ця інформація допомогла вам :)
Khemraj

За яких обставин можна / слід встановити falseJetifier на помилковий?
Марк

1
@Mark enableJetifier=false- значення за замовчуванням. Це неправда, коли ви не встановлюєте його. Це означає, що жодна з ваших бібліотек не буде переписана на AndroidX.
Хемраж

4
Міграція андроїд-студії погано працює. мені довелося вручну виправити сотні файлів ... я витрачаю більше часу на виправлення коду за рахунок змін інструментів Google, ніж власне на програмування коду, який має значення ... зітхання
LearningPath

1
Зараз це (3.3) називаєтьсяMigrate to AndroidX
Дейл

32

На підставі документації :

androidx - це нова структура пакетів, щоб зрозуміти, які пакунки входять в операційну систему Android, а які в пакеті APK вашого додатка. Ідучи вперед, ієрархія пакетів Android. * Буде зарезервована для пакетів Android, які постачаються з операційною системою; інші пакети будуть видані в новій ієрархії пакунків.

Перероблена структура пакунків повинна заохочувати менші та більш зосереджені бібліотеки. Детальну інформацію про відображення артефактів ви знайдете тут .

Існують бібліотеки підтримки (містять компоненти та пакети для зворотної сумісності) під назвою "v7", коли мінімальний рівень SDK підтримується 14, нове іменування дає зрозуміти поділ між API-програмами, що входять у платформу, та бібліотеками для розробників додатків, які використовуються на різних версіях Android. Для отримання детальної інформації можна звернутися до офіційного оголошення .


22

AndroidX - це проект з відкритим кодом, який команда Android використовує для розробки, тестування, упаковки, версій та випуску бібліотек в рамках Jetpack .

AndroidX - це головне вдосконалення оригінальної бібліотеки підтримки Android . Як і Бібліотека підтримки, AndroidX поставляється окремо від ОС Android та забезпечує сумісність із зворотніми версіями Android. AndroidX повністю замінює бібліотеку підтримки, надаючи паритет функцій та нові бібліотеки.

AndroidX включає такі функції:

  • Всі пакети в AndroidX живуть у послідовному просторі імен, починаючи з рядка androidx. Пакети бібліотеки підтримки були відображені у відповідні пакети androidx. *. Повне відображення всіх старих класів та створення артефактів до нових див. На сторінці Package Refactoring.

  • На відміну від Бібліотеки підтримки, пакети AndroidX окремо підтримуються та оновлюються. У пакетах androidx суворо Semantic Versioningпочинається з версії 1.0.0. Ви можете оновити бібліотеки AndroidX у своєму проекті самостійно.

  • Вся нова розробка Бібліотеки підтримки відбуватиметься в бібліотеці AndroidX. Сюди входить підтримка оригінальних артефактів бібліотеки підтримки та впровадження нових компонентів Jetpack.

Використання AndroidX

Див. Розділ Перехід на AndroidX, щоб дізнатися, як перемістити існуючий проект.

Якщо ви хочете використовувати AndroidX в новому проекті, вам потрібно встановити компіляційний SDK на Android 9.0 (API рівень 28) або вище і встановити обидва наведені нижче прапори плагіну Android Gradle як істинні у вашому gradle.propertiesфайлі.

  • android.useAndroidX: Якщо встановлено значення true, плагін Android використовує відповідну бібліотеку AndroidX замість бібліотеки підтримки. Прапор за замовчуванням є помилковим, якщо його не вказано.

  • android.enableJetifier: Якщо встановлено значення true, плагін Android автоматично мігрує існуючі сторонні бібліотеки для використання AndroidX, переписуючи свої бінарні файли. Прапор за замовчуванням є помилковим, якщо його не вказано.

Для відображення артефактів див. Це


14

Ця стаття Android Jetpack: Що означають останні оголошення про бібліотеку підтримки Android? це добре пояснює

Сьогодні багато хто вважає Бібліотеку підтримки важливою частиною розробки додатків для Android, доки її використовують 99 відсотків програм у магазині Google Play. Однак, по мірі того, як Бібліотека підтримки зростала, невідповідності виникли в порядку встановлення імен бібліотеки.

Спочатку назва кожного пакету вказувала мінімальний рівень API, підтримуваний цим пакетом, наприклад, support-v4. Однак версія 26.0.0Бібліотеки підтримки збільшила мінімальний API до 14, тому сьогодні багато імен пакетів не мають нічого спільного з мінімально підтримуваним рівнем API. Коли в пакетах support-v4 і support-v7 мінімальний API 14, легко зрозуміти, чому люди плутаються!

Щоб усунути цю плутанину, Google наразі переробляє Бібліотеку підтримки в нову структуру пакунків розширень Android (AndroidX). На AndroidX будуть представлені спрощені назви пакетів, а також Maven groupIds та artifactIds, які краще відображають вміст кожного пакету та підтримуваний рівень API.

Згідно з чинною умовою іменування, також не зрозуміло, які пакунки входять до операційної системи Android, а які пакуються з APK програми (Android Package Kit) . Щоб усунути цю плутанину, всі нерозділені бібліотеки будуть переміщені в androidx. * Простір імен Android, а ієрархія пакетів android. * Буде зарезервована для пакетів, що постачаються з операційною системою Android .


12

Лише декілька бітів доповнення з моєї сторони до всіх доступних відповідей

Потреба в AndroidX

  1. Як сказано у дивовижній відповіді @KhemRaj,

Згідно з чинною умовою іменування, незрозуміло, які пакунки входять до операційної системи Android , а які пакуються з APK програми ( Android Package Kit ). Щоб усунути цю плутанину, всі розв'язані бібліотеки будуть переміщені в androidx . * Простір імен AndroidX, а ієрархія пакетів android. * Буде зарезервована для пакетів, що постачаються з операційною системою Android.

  1. Крім цього,

    Спочатку назва кожного пакета вказувала мінімальний рівень API, підтримуваний цим пакетом, наприклад support-v4 . Однак версія 26.0.0 Бібліотеки підтримки збільшила мінімальний API до 14 , тому сьогодні багато імен пакетів не мають нічого спільного з мінімально підтримуваним рівнем API. Коли в пакетах support-v4 та support-v7 мінімальний API 14, легко зрозуміти, чому люди плутаються !. Тож зараз для AndroidX немає залежності від рівня API.

Ще одна важлива зміна полягає в тому, що артефакти AndroidX оновлюватимуться незалежно, тому ви зможете оновлювати окремі бібліотеки AndroidX у своєму проекті, а не змінювати кожну залежність одразу. Ті, що засмучують повідомлення " Усі бібліотеки com.android.support повинні використовувати саме таку специфікацію версії ", повідомлення повинні стати минулим!


7

Я дізнався про AndroidX з цього відео на Android Dev Summit . Підсумок -

  1. Більше немає бібліотеки підтримки: Бібліотека підтримки для Android ніколи не підтримуватиме Google у просторі імен бібліотеки підтримки. Отже, якщо ви хочете знайти виправлення помилки в бібліотеці підтримки, вам доведеться перенести свій проект в AndroidX
  2. Краще управління пакетами: для стандартизованої та незалежної версії. Тому що попередня версія бібліотеки підтримки була занадто заплутаною. Це позбавить вас від болю "Усі бібліотеки com.android.support повинні використовувати точно таку ж специфікацію версії" .
  3. Інші бібліотеки Бога перенеслись на AndroidX : служби Google Play, Firebase, Mockito 2 тощо переносяться на AndroidX.
  4. Нові бібліотеки будуть опубліковані за допомогою артефакту AndroidX: Усі бібліотеки будуть знаходитись у просторі імен AndroidX, як Android Jetpack

4

Це те саме, що версії підтримки AppCompat, але в ньому менше безладу версій v4 та v7, тому це значно допомагає від використання різних компонентів андроїд XML елементів.


4

androidxзамінить support libraryпісля 28.0.0. Ви повинні перенести свій проект, щоб ним скористатися. androidxвикористовує Semantic Versioning. Використання AndroidXне буде плутано з версією, яка представлена ​​у назві бібліотеки та імені пакета. Життя стає простішим

[AndroidX та підтримка сумісності]


3

AndroidX - це проект з відкритим кодом, який команда Android використовує для розробки, тестування, упаковки, версій та випуску бібліотек в рамках Jetpack.

Після години боротьби я вирішив це, включивши в додаток / build.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'

Під час міграції на Android студії файл програми / gradle автоматично оновлюється реалізаціями бібліотеки виправлень зі стандартної бібліотеки

Зверніться до: https://developer.android.com/jetpack/androidx/migrate


0

Android пропонує декілька різних наборів бібліотек. Один називається бібліотекою підтримки Android, а другий - AndroidX. Вибір "Використовувати android. * Артефакти" означає, що ми хочемо використовувати AndroidX.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.