Что такое 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?
  • Вариант использования и факторы влияния в существующих проектах.

Прочтите developer.android.com/topic/libraries/support-library/…. androidx.* - это иерархия пакетов для вспомогательных библиотек. Все они будут иметь тот же пакет, что и мы в эпоху androidx (как и компоненты архитектуры, другие вспомогательные библиотеки).

ADM 11.07.2018 09:58

Что вы точно не поняли? Почему поменяли пакет?

Rohit5k2 11.07.2018 09:58

@ADM, почему они перешли на пакет androidx с CORE android.

Khemraj Sharma 11.07.2018 10:03

Они просто переделали структуру пакета для простоты. Об этом также было объявлено в IO 2018, если вы хотите посмотреть. Спасибо

ADM 11.07.2018 10:05
279
4
171 730
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

androidx is new package structure to make it clearer which packages are bundled with the Android operating system, and which are packaged with your app's APK. Going forward, the android.* package hierarchy will be reserved for Android packages that ship with the operating system; other packages will be issued in the new androidx.* package hierarchy.

Измененная структура пакета призвана стимулировать более мелкие и более специализированные библиотеки. Вы найдете подробную информацию о сопоставлениях артефактов здесь.

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

Ответ принят как подходящий

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

От Документация AndroidX

We are rolling out a new package structure to make it clearer which packages are bundled with the Android operating system, and which are packaged with your app's APK. Going forward, the android.* package hierarchy will be reserved for Android packages that ship with the operating system. Other packages will be issued in the new androidx.* package hierarchy as part of the AndroidX library.

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

AndroidX - это переработанная библиотека, чтобы сделать имена пакетов более понятными. Таким образом, отныне иерархия андроид будет только для классов 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 использовал версию SDK, но AndroidX использует Semantic-version. Будет произведена повторная версия с 28.0.0 до 1.0.0.

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

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

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

Existing project

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

image

New project

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

android.enableJetifier=true
android.useAndroidX=true

Отметьте @ Сопоставления библиотек для одинакового пакета AndroidX.

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

Что такое Jetifier?

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

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

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

От Версия поддержки Android 28.0.0

This will be the last feature release under the android.support packaging, and developers are encouraged to migrate to 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

@androidmalin Рад слышать от вас - эта информация вам помогла :)

Khemraj Sharma 08.10.2018 17:17

При каких обстоятельствах вы можете / должны установить для enableJetifier значение false?

Mark 11.11.2018 10:58

@Mark enableJetifier=false - значение по умолчанию. Это неверно, если вы его не устанавливаете. Это означает, что ни одна из ваших библиотек не будет перезаписана на AndroidX.

Khemraj Sharma 11.11.2018 11:12

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

LearningPath 17.11.2018 17:06

Я сделал это после того, как продолжил импорт каждого файла и ссылки на androidx и com.google.android. После мафии все уладилось, и мой проект был успешно скомпилирован.

Neri 08.02.2019 11:07

Теперь он (3.3) называется Migrate to AndroidX.

Dale 10.03.2019 19:11

теперь перейдите на androidx, просто сделайте небольшую ошибку, может быть, 1 или 2

reza rahmad 15.04.2019 04:48

Первой цитаты из Документов нет. Даже в документе нет слова мы. Может обновил док?

touhid udoy 20.07.2019 08:49

@TouhidulIslam о да, теперь документация изменена. Но он говорит то же самое.

Khemraj Sharma 20.07.2019 13:53

Почему мы должны принимать ошибки компиляции? Так что не беспокойтесь об ошибках времени компиляции, ваше приложение будет работать отлично !!! С этого момента я буду писать код с ошибками компиляции :-) Jetifier справится с этим !!!

saeed khalafinejad 16.02.2020 10:08

Это то же самое, что и версии поддержки AppCompat, но в нем меньше беспорядка в версиях v4 и v7, поэтому очень помогает использование различных компонентов XML-элементов Android.

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

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

AndroidX includes the following features:

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

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

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

Эта статья Android Jetpack: что означают недавние анонсы для библиотеки поддержки Android? хорошо это объясняет

Today, many consider the Support Library an essential part of Android app development, to the point where it’s used by 99 percent of apps in the Google Play store. However, as the Support Library has grown, inconsistencies have crept in surrounding the library’s naming convention.

Initially, the name of each package indicated the minimum API level supported by that package, for example, support-v4. However, version 26.0.0 of the Support Library increased the minimum API to 14, so today many of the package names have nothing to do with the minimum supported API level. When support-v4 and the support-v7 packages both have a minimum API of 14, it’s easy to see why people get confused!

To clear up this confusion, Google is currently refactoring the Support Library into a new Android extension library (AndroidX) package structure. AndroidX will feature simplified package names, as well as Maven groupIds and artifactIds that better reflect each package’s content and its supported API levels.

With the current naming convention, it also isn’t clear which packages are bundled with the Android operating system, and which are packaged with your application’s APK (Android Package Kit). To clear up this confusion, all the unbundled libraries will be moved to AndroidX’s androidx.* namespace, while the android.* package hierarchy will be reserved for packages that ship with the Android operating system.

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

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

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

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

  1. Помимо этого,

    Первоначально имя каждого пакета указывало минимальный уровень API, поддерживаемый этим пакетом, например поддержка-v4. Однако версия 26.0.0 библиотеки поддержки увеличила минимальный API до 14, поэтому сегодня многие имена пакетов не имеют ничего общего с минимальным поддерживаемым уровнем API. Когда у пакетов support-v4 и поддержка-v7 минимальный API равен 14, легко понять, почему люди запутались! Итак, теперь с AndroidX нет зависимости от уровня API.

Еще одно важное изменение заключается в том, что артефакты AndroidX будут обновляться независимо, поэтому вы сможете обновлять отдельные библиотеки AndroidX в своем проекте, вместо того, чтобы изменять каждую зависимость сразу. Эти разочаровывающие сообщения «Все библиотеки com.android.support должны использовать одну и ту же спецификацию версии.» должны уйти в прошлое!

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

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

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

Я узнал об AndroidX из этого Видео саммита разработчиков Android. Обобщение -

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

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

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