Что такое андроид

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

2 ответа

Решение

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

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

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

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

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

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

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

полное сопоставление для пакетов AndroidX

AndroidX использует Semantic-версию

Ранее, 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

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

Проверьте @ Официальную страницу миграции на AndroidX

Что такое Jetifier?

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

  • Если вы создаете приложение и обнаруживаете некоторые ошибки после переноса, вам нужно исправить эти незначительные ошибки. Вы не застрянете там, потому что это легко исправить.
  • Сторонние библиотеки в каталоге не конвертируются в 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

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

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

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, переписывая их двоичные файлы. По умолчанию флаг имеет значение false, если он не указан.

Для отображения артефактов смотрите это

Эта статья 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) вашего приложения. Чтобы устранить эту путаницу, все разделенные библиотеки будут перемещены в пространство имен AndroidX androidx.*, А иерархия пакетов android.* Будет зарезервирована для пакетов, поставляемых с операционной системой Android.

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

Необходимость AndroidX

  1. Как сказано в удивительном ответе @KhemRaj,

При нынешнем соглашении об именах неясно, какие пакеты входят в состав операционной системы Android, а какие - в APK вашего приложения (Android Package Kit). Чтобы прояснить эту путаницу, все разукрупненные библиотеки будут перемещены в AndroidX "s 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 должны использовать одну и ту же спецификацию версии " должны уйти в прошлое!

Я узнал об AndroidX из этого видео Android Dev Summit. Обобщение -

  1. Больше нет библиотеки поддержки: библиотека поддержки Android никогда не будет поддерживаться Google в пространстве имен библиотеки поддержки. Поэтому, если вы хотите найти исправления ошибки в библиотеке поддержки, вам необходимо перенести свой проект в AndroidX.
  2. Лучшее управление пакетами: для стандартизованного и независимого управления версиями, поскольку предыдущая поддержка версий библиотеки была слишком запутанной. Это избавит вас от боли, связанной с сообщением "Все библиотеки com.android.support должны использовать одну и ту же спецификацию версии".
  3. Другие библиотеки God перешли на AndroidX: сервисы Google Play, Firebase, Mockito 2 и т. Д. Перенесены на AndroidX.
  4. Новые библиотеки будут опубликованы с использованием артефакта AndroidX: все библиотеки будут в пространстве имен AndroidX, например Android Jetpack.

androidx заменит support library после 28.0.0. Вы должны перенести свой проект, чтобы использовать его.androidx использует Semantic Versioning. С помощьюAndroidXвас не смутит версия, указанная в имени библиотеки и имени пакета. Жизнь становится легче

[AndroidX и поддержка совместимости]

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

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 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 Studio файл app / gradle автоматически обновляется с использованием реализаций библиотеки исправлений из стандартной библиотеки.

Обратитесь к: https://developer.android.com/jetpack/androidx/migrate

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

Другие вопросы по тегам