我正在阅读关于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中打包新的支持库?
现有项目中的用例和影响因素。
AndroidX是一个开源项目,Android团队使用它在Jetpack中开发、测试、打包、版本和发布库。
AndroidX是对原来的Android支持库的一个重大改进。像支持库一样,AndroidX与Android操作系统分开发布,并提供跨Android版本的向后兼容性。AndroidX通过提供特性校验和新库完全取代了支持库。
AndroidX包含以下特性:
All packages in AndroidX live in a consistent namespace starting with the string androidx. The Support Library packages have been mapped
into the corresponding androidx.* packages. For a full mapping of all the
old classes and build artifacts to the new ones, see the Package
Refactoring page.
Unlike the Support Library, AndroidX packages are separately maintained and updated. The androidx packages use strict Semantic Versioning starting with version 1.0.0. You can update AndroidX
libraries in your project independently.
All new Support Library development will occur in the AndroidX library. This includes maintenance of the original Support Library
artifacts and introduction of new Jetpack components.
使用AndroidX
参见迁移到AndroidX了解如何迁移现有项目。
如果你想在一个新项目中使用AndroidX,你需要将编译SDK设置为Android 9.0 (API级别28)或更高,并在你的Gradle中将以下两个Android Gradle插件标志设置为true。属性文件。
android。useAndroidX:当设置为true时,Android插件使用适当的AndroidX库而不是支持库。国旗
如果未指定,则默认为false。
android。enableJetifier:当设置为true时,Android插件会自动迁移现有的第三方库,通过重写它们的二进制文件来使用AndroidX。缺省情况下,该标志为false
未指定。
对于工件映射,请参见此
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是一个开源项目,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