Что такое 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
Ранее support library
использовал версию SDK, но AndroidX использует Semantic-version
. Будет переиздание с 28.0.0 → 1.0.0.
Как перенести текущий проект
В Android Studio 3.2 (сентябрь 2018 г.) есть прямая возможность перенести существующий проект в AndroidX
. Этот рефакторинг всех пакетов автоматически.
Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.
Существующий проект
- Android Studio> Меню "Рефакторинг"> Миграция в AndroidX...
- Он проанализирует и откроет окно рефрактора внизу. Принять изменения, которые будут сделаны.
Новый проект
Поместите эти флаги в свой gradle.properties
android.enableJetifier=true
android.useAndroidX=true
Проверьте @сопоставления библиотек для одинакового пакета AndroidX.
Проверьте @официальную страницу перехода на AndroidX
Ошибки миграции
- Если вы создаете приложение и после миграции обнаруживаете ошибки, вам нужно исправить эти незначительные ошибки. Вы не застрянете там, потому что это легко исправить.
- Сторонние библиотеки в каталоге не конвертируются в 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
- Как сказано в удивительном ответе @KhemRaj,
В соответствии с действующим соглашением об именах неясно, какие пакеты связаны с операционной системой Android, а какие - с вашими приложениями APK (Android Package Kit). Чтобы устранить эту путаницу, все разделенные библиотеки будут перемещены в пространство имен AndroidX androidx. *, А иерархия пакетов android. * Будет зарезервирована для пакетов, поставляемых с операционной системой Android.
Кроме этого,
Первоначально имя каждого пакета указывало минимальный уровень 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