什么是AndroidX

问题描述 投票:97回答:4

我正在阅读关于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中打包新的支持库。
  • 用例和影响现有项目的因素。
android android-architecture-components android-jetpack androidx
4个回答
194
投票

AndroidX - Android Extension Library

来自AndroidX documentation

我们正在推出一种新的软件包结构,以便更清楚哪些软件包与Android操作系统捆绑在一起,并与您的应用程序的APK一起打包。展望未来,android。*包层次结构将保留给随操作系统提供的Android包。其他软件包将作为AndroidX库的一部分在新的androidx。*包层次结构中发布。

需要AndroidX

AndroidX是重新设计的库,使包名更清晰。所以从现在开始,android层次结构将仅用于android默认类,它附带android操作系统。和其他库/依赖项将成为androidx的一部分(更有意义)。所以从现在起所有的新开发都将在androidx中更新。

com.android.support。**:androidx。 com.android.support:appcompat-v7:androidx.appcompat:appcompat com.android.support:recyclerview-v7:androidx.recyclerview:recyclelerview com.android.support:design:com.google.android.material:material

Complete Artifact mappings for AndroidX packages

AndroidX uses Semantic-version

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

如何迁移当前项目

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

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

Existing project

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

image

New project

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

android.enableJetifier=true
android.useAndroidX=true

检查@Library mappings for equal AndroidX package

检查@Official page of Migrate to AndroidX

What is Jetifier?

Bugs of migrating

  • 如果您构建应用程序,并在迁移后发现一些错误,那么您需要修复这些小错误。你不会被困在那里,因为这很容易修复。
  • 第三方库未在目录中转换为AndroidX,但它们在运行时由Jetifier转换,因此不必担心编译时错误,您的应用程序将完美运行。

Support 28.0.0 is last release?

来自Android Support Revision 28.0.0

这将是android.support包装下的最后一个功能版本,鼓励开发人员迁移到AndroidX 1.0.0

所以请使用AndroidX,因为Android将从现在开始仅更新androidx包。

Further Reading

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html


18
投票

基于documentation

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

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

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


9
投票

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

AndroidX是对原版Android Support Library的重大改进。与支持库一样,AndroidX与Android操作系统分开提供,并提供跨Android版本的向后兼容性。 AndroidX通过提供功能奇偶校验和新库完全取代了支持库。

AndroidX包括以下功能:

  • AndroidX中的所有软件包都以字符串androidx开头,位于一致的命名空间中。支持库包已映射到相应的androidx。*包。有关所有旧类和构建工件的完整映射到新构件,请参阅“包重构”页面。
  • 与支持库不同,AndroidX软件包是单独维护和更新的。 androidx软件包使用严格的Semantic Versioning,从版本1.0.0开始。您可以单独更新项目中的AndroidX库。
  • 所有新的支持库开发都将在AndroidX库中进行。这包括维护原始支持库工件和引入新的Jetpack组件。

使用AndroidX

请参阅Migrating to AndroidX以了解如何迁移现有项目。

如果要在新项目中使用AndroidX,则需要将compile SDK设置为Android 9.0(API级别28)或更高版本,并在gradle.properties文件中将以下两个Android Gradle插件标志设置为true。

  • android.useAndroidX:设置为true时,Android插件使用相应的AndroidX库而不是支持库。如果未指定,则默认情况下该标志为false。
  • android.enableJetifier:当设置为true时,Android插件会自动迁移现有的第三方库,通过重写其二进制文件来使用AndroidX。如果未指定,则默认情况下该标志为false。

对于神器映射,请参阅this


0
投票

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


0
投票

这篇文章Android Jetpack: What do the recent announcements mean for Android’s Support Library?解释得很好

今天,许多人认为支持库是Android应用程序开发的重要组成部分,到了Google Play商店中99%的应用程序使用它。但是,随着支持库的增长,围绕库的命名约定的不一致性已经出现。

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

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

根据当前的命名惯例,还不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android软件包套件)打包在一起。为了消除这种混乱,所有非捆绑库将被移动到AndroidX的androidx。*命名空间,而android。*包层次结构将被保留用于随Android操作系统一起提供的包。

© www.soinside.com 2019 - 2024. All rights reserved.