Я читаю о библиотеке комнаты 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?Что вы точно не поняли? Почему поменяли пакет?
@ADM, почему они перешли на пакет androidx с CORE android.
Они просто переделали структуру пакета для простоты. Об этом также было объявлено в IO 2018, если вы хотите посмотреть. Спасибо
На основе документация:
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. Вы можете обратиться к официальное объявление для более подробной информации.
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 - это переработанная библиотека, чтобы сделать имена пакетов более понятными. Таким образом, отныне иерархия андроид будет только для классов 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. Это автоматически выполняет рефакторинг всех пакетов.
Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.
Existing project
New project
Поместите эти флаги в свой gradle.properties
android.enableJetifier=true
android.useAndroidX=true
Отметьте @ Сопоставления библиотек для одинакового пакета AndroidX.
Проверить @ Официальная страница перехода на AndroidX
От Версия поддержки 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 Рад слышать от вас - эта информация вам помогла :)
При каких обстоятельствах вы можете / должны установить для enableJetifier значение false?
@Mark enableJetifier=false - значение по умолчанию. Это неверно, если вы его не устанавливаете. Это означает, что ни одна из ваших библиотек не будет перезаписана на AndroidX.
Миграция студии Android работает плохо. мне пришлось вручную исправить сотни файлов ... я трачу больше времени на исправление кода из-за изменений инструментов Google, чем на собственно программирование кода, который имеет значение ... вздох
Я сделал это после того, как продолжил импорт каждого файла и ссылки на androidx и com.google.android. После мафии все уладилось, и мой проект был успешно скомпилирован.
Теперь он (3.3) называется Migrate to AndroidX.
теперь перейдите на androidx, просто сделайте небольшую ошибку, может быть, 1 или 2
Первой цитаты из Документов нет. Даже в документе нет слова мы. Может обновил док?
@TouhidulIslam о да, теперь документация изменена. Но он говорит то же самое.
Почему мы должны принимать ошибки компиляции? Так что не беспокойтесь об ошибках времени компиляции, ваше приложение будет работать отлично !!! С этого момента я буду писать код с ошибками компиляции :-) Jetifier справится с этим !!!
Это то же самое, что и версии поддержки 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.0of 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
При нынешнем соглашении об именах неясно, какие пакеты связаны с Операционная система Android, а какие - с APK вашего приложения (Комплект пакета Android). Чтобы устранить эту путаницу, все разделенные библиотеки будут перемещены в пространство имен androidx. * AndroidX, а иерархия пакетов android. * Будет зарезервирована для пакетов, поставляемых с операционной системой Android.
Помимо этого,
Первоначально имя каждого пакета указывало минимальный уровень 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 из этого Видео саммита разработчиков Android. Обобщение -
Android предоставляет несколько различных наборов библиотек. Одна называется библиотекой поддержки Android, а другая - AndroidX. Выбор «Использовать артефакты android. *» Означает, что мы хотим использовать AndroidX.
Прочтите developer.android.com/topic/libraries/support-library/….
androidx.*- это иерархия пакетов для вспомогательных библиотек. Все они будут иметь тот же пакет, что и мы в эпохуandroidx(как и компоненты архитектуры, другие вспомогательные библиотеки).