什么是AndroidX

Khe*_*raj 204 android android-architecture-components android-jetpack androidx

我正在阅读关于Android的房间库.我看到他们改变包装androidandroidx.我不明白.请有人解释一下.

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)

即使这也适用于android包装.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)
  • 需要什么来包装新的支持库androidx而不是android.
  • 用例和影响现有项目的因素.

Khe*_*raj 279

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:程序兼容性 com.android.support:recyclerview-v7:androidx.recyclerview:recyclerview com.android.support:design:com.google.android.material:材料

AndroidX软件包的完整工件映射

AndroidX使用Semantic-version

以前,support library使用SDK版本但AndroidX使用Semantic-version.它将从28.0.0→1.0.0重新版本.

如何迁移当前项目

在Android Studio 3.2(2018年9月)中,可以直接选择将现有项目迁移到AndroidX.这将自动折射所有包.

在迁移之前,强烈建议您备份项目.

现有项目

  • Android Studio>重构菜单>迁移到AndroidX ...
  • 它将分析并打开底部的Refractor窗口.接受要完成的更改.

图片

新项目

把这些标志放在你的 gradle.properties

android.enableJetifier=true
android.useAndroidX=true
Run Code Online (Sandbox Code Playgroud)

检查@ Library映射是否具有相同的AndroidX包.

检查迁移到AndroidX的 @ Official页面

什么是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

  • android studio的迁移效果不佳。我不得不手动修复数百个文件...由于Google工具的更改,我花了更多的时间来修复代码,而不是实际编写重要的代码... (4认同)
  • @androidmalin很高兴收到您的来信-此信息对您有帮助:) (2认同)

Sag*_*gar 26

根据文档:

androidx是一种新的软件包结构,可以更清楚地将哪些软件包与Android操作系统捆绑在一起,并与您的应用程序的APK一起打包.展望未来,android.*包层次结构将保留给随操作系统提供的Android包; 其他包将在新的androidx.*包层次结构中发布.

重新设计的包结构旨在鼓励更小,更集中的库.您可以在此处找到有关工件映射的详细信息.

当支持的最小SDK级别为14时,有一个名为"v7"的支持库(包含用于向后兼容的组件和包),新命名清楚地理解了与平台捆绑的API与使用的应用程序开发人员库之间的划分在不同版本的Android上.您可以参考官方公告了解更多详情.


Bas*_*asi 17

AndroidX是Android团队用来在Jetpack中开发,测试,打包,版本和发布库的开源项目。

AndroidX是对原始Android支持库的重大改进。与支持库一样,AndroidX与Android OS分开提供,并在Android版本之间提供向后兼容性。AndroidX通过提供功能奇偶校验和新库来完全替代支持库。

AndroidX包含以下功能:

  • AndroidX中的所有程序包都位于以字符串androidx开头的一致名称空间中。支持库包已映射到相应的androidx。*包中。有关所有旧类和构建构件到新构件的完整映射,请参见Package Refactoring页面。

  • 与支持库不同,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。

对于工件映射,请参阅


onm*_*133 9

本文Android Jetpack:最近的公告对Android的支持库意味着什么?讲得很好

如今,许多人认为支持库是Android应用程序开发的重要组成部分,以至于Google Play商店中99%的应用程序都在使用它。但是,随着支持库的增长,围绕该库的命名约定的不一致性逐渐蔓延。

最初,每个软件包的名称表示该软件包支持的最低API级别,例如support-v4。但是,支持库的版本26.0.0将最低API增加到14,因此今天许多软件包名称与最低支持API级别无关。当support-v4和support-v7软件包的最小API均为14时,很容易看出人们为什么感到困惑!

为了消除这种混乱,Google目前正在将支持库重构为新的Android扩展库(AndroidX)包结构。AndroidX将具有简化的程序包名称,以及可以更好地反映每个程序包的内容及其支持的API级别的Maven groupId和artifactIds。

根据当前的命名约定,还不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android软件包套件)打包在一起。为了消除这种混乱,所有未捆绑的库都将移至AndroidX的androidx。*名称空间,而android。*包层次结构将保留给Android操作系统随附的包。


Gk *_*mon 8

我从这个Android Dev Summit 视频中了解了 AndroidX 。总结就是——

  1. 没有更多的支持库: Android 支持库永远不会由谷歌在支持库命名空间下维护。因此,如果您想在支持库中找到错误的修复程序,您必须在 AndroidX 中迁移您的项目
  2. 更好的包管理:用于标准化和独立的版本控制。因为以前的支持库版本控制太混乱了。它会让您摆脱“所有 com.android.support 库必须使用完全相同的版本规范”消息的痛苦 。
  3. 其他神库迁移到AndroidX:Google play服务、Firebase、Mockito 2等迁移到AndroidX。
  4. 新库将使用 AndroidX 工件发布: 所有库都将在 AndroidX 命名空间中,如Android Jetpack


Abh*_*mar 7

我这边只是所有可用答案的补充

需要AndroidX

  1. 正如@KhemRaj的惊人回答所说,

根据当前的命名约定,目前尚不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android Package Kit)捆绑在一起。为了消除这种混乱,所有未捆绑的库都将移至AndroidX的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库必须使用完全相同的版本规范 ”消息应该成为过去!


raj*_*dia 5

它与 AppCompat 版本的支持相同,但 v4 和 v7 版本的混乱较少,因此使用 android XML 元素的不同组件有很大帮助。


yoA*_*ex5 5

androidx将取代support library28.0.0。您应该迁移您的项目以使用它。androidx使用Semantic Versioning. 使用AndroidX不会被库名和包名中显示的版本混淆。生活变得更轻松

【AndroidX与支持兼容性】