Что такое AndroidX

Я читаю о библиотеке комнаты 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.
  • Использовать случай и влиять на факторы в существующих проектах.

Ответ 1

AndroidX - библиотека расширений Android

Из документации AndroidX

Мы внедряем новую структуру пакета, чтобы сделать его более понятным, который пакеты связаны с операционной системой Android, и которые в комплекте с вашим приложением APK. Идем вперед, пакет android. * иерархия будет зарезервирована для пакетов Android, которые поставляются с операционная система. Другие пакеты будут выпущены в новом 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 использует Semantic-версию

Ранее support library использовал версию SDK, но AndroidX использует Semantic-version. Будет переиздание с 28.0.0 → 1.0.0.

Как перенести текущий проект

В Android Studio 3.2 (сентябрь 2018 г.) есть прямая возможность перенести существующий проект в AndroidX. Этот рефакторинг всех пакетов автоматически.

Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.

Существующий проект

  • Android Studio> Меню "Рефакторинг"> Миграция в AndroidX...
  • Он проанализирует и откроет окно рефрактора внизу. Принять изменения, которые будут сделаны.

image

Новый проект

Поместите эти флаги в свой gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Проверьте @сопоставления библиотек для одинакового пакета AndroidX.

Проверьте @официальную страницу перехода на AndroidX

Что такое Jetifier?

Ошибки миграции

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

Поддержка 28.0.0 - последний выпуск?

Из Android Support Revision 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

На основании документации:

androidx - это новая структура пакетов, чтобы было понятнее, какие пакеты связаны с операционной системой Android, а какие - с приложением APK. В дальнейшем иерархия пакетов android. * Будет зарезервирована для пакетов Android, поставляемых с операционной системой; другие пакеты будут выпущены в новой иерархии пакетов androidx. *.

Перепроектированная структура пакета должна поощрять меньшие и более сосредоточенные библиотеки. Вы найдете подробности относительно отображений артефактов здесь.

Существуют вспомогательные библиотеки (содержащие компонент и пакеты для обратной совместимости) с именем "v7", когда минимальный поддерживаемый уровень SDK равен 14, новое именование дает четкое представление о разделении между API-интерфейсами в комплекте с платформой и используемыми библиотеками для разработчиков приложений. на разных версиях андроида. Вы можете обратиться к официальному объявлению для более подробной информации.

Ответ 3

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

AndroidX - это значительное улучшение оригинальной библиотеки поддержки Android. Как и библиотека поддержки, AndroidX поставляется отдельно от ОС Android и обеспечивает обратную совместимость между версиями Android. AndroidX полностью заменяет библиотеку поддержки, предоставляя функции четности и новые библиотеки.

AndroidX включает в себя следующие функции:

  • Все пакеты в AndroidX живут в согласованном пространстве имен, начиная с Строка андроид. Пакеты поддержки библиотеки были сопоставлены в соответствующие пакеты androidx. *. Для полного картирования всех старые классы и сборка артефактов для новых, см. пакет Рефакторинг страницы.

  • В отличие от библиотеки поддержки, пакеты AndroidX поддерживаются и обновляются отдельно. Пакеты androidx используют строгий Semantic Versioning, начиная с версии 1.0.0. Вы можете обновить AndroidX библиотеки в вашем проекте самостоятельно.

  • Все новые разработки библиотеки поддержки будут происходить в AndroidX библиотека. Это включает в себя обслуживание оригинальной библиотеки поддержки артефакты и внедрение новых компонентов Jetpack.

Использование AndroidX

См. Миграция на AndroidX, чтобы узнать, как перенести существующий проект.

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

  • android.useAndroidX: при значении true плагин Android использует соответствующая библиотека AndroidX вместо библиотеки поддержки. Флаг по умолчанию имеет значение false, если он не указан.

  • android.enableJetifier: при значении true подключаемый модуль Android автоматически переносит существующие сторонние библиотеки для использования AndroidX переписав свои двоичные файлы. Флаг является ложным по умолчанию, если это не указано.

Отображение артефактов см. здесь.

Ответ 4

Эта статья 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 и artifactIds, которые лучше отражают содержимое каждого пакета и поддерживаемые уровни API.

В соответствии с действующим соглашением об именах также неясно, какие пакеты связаны с операционной системой Android, а какие - с вашими приложениями APK (Android Package Kit). Чтобы устранить эту путаницу, все разделенные библиотеки будут перемещены в пространство имен AndroidXs androidx. *, А иерархия пакетов android. * Будет зарезервирована для пакетов, которые поставляются с операционной системой Android.

Ответ 5

Просто несколько битов от моей стороны ко всем доступным ответам

Требуется 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 должны использовать сообщения с одинаковой спецификацией версии" должны уйти в прошлое!

Ответ 6

Это то же самое, что и версии поддержки AppCompat, но в нем меньше путаницы версий v4 и v7, поэтому очень полезно использовать различные компоненты XML-элементов android.

Ответ 7

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

После нескольких часов борьбы я решил эту проблему, добавив в app/build.gradle следующее:

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

Поместите эти флаги в свои gradle.properties

android.enableJetifier=true
android.useAndroidX=true
Changes in Manifest:

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