精华内容
下载资源
问答
  • Android X 详解 千次阅读
    2021-06-11 10:25:42

    什么是Android X

    AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。

    AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。此外,AndroidX 还包括以下功能:

    AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧编译工件到新编译工件的完整映射,请参阅软件包重构页面。

    与支持库不同,AndroidX 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的 AndroidX 库。

    所有新支持库的开发工作都将在 AndroidX 库中进行。这包括维护原始支持库工件和引入新的 Jetpack 组件。

    怎么使用 AndroidX

    AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。

    注意:我们建议迁移时在单独的分支中工作。此外,还应设法避免在执行迁移时重构代码。

    前提条件

    迁移之前,请先将您的应用更新到最新版本。我们建议您更新项目以使用支持库的最终版本:版本 28.0.0。这是因为,1.0.0 版本的 AndroidX 工件是与支持库 28.0.0 工件等效的二进制文件。

    使用 Android Studio 迁移现有项目

    使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。

    重构命令使用两个标记。默认情况下,这两个标记在 gradle.properties 文件中都设为 true:

    android.useAndroidX=true

    Android 插件会使用对应的 AndroidX 库(而非支持库)。

    android.enableJetifier=true

    Android 插件会通过重写其二进制文件来自动迁移现有的第三方库以使用 AndroidX。

    注意:内置的 Android Studio 迁移功能可能并不是一切都能处理。根据您的编译配置,您可能需要手动更新编译脚本和 Proguard 映射。例如,如果您在一个单独的编译文件中维护依赖项配置,请使用下面提到的映射文件来检查依赖项并将其更新为对应的 AndroidX 软件包。

    常见问题:

    1. 资源找不到,包路径有问题。

    eg: android.support.v4.media.app.NotificationCompat.MediaStyle() 在androidX下就变成了androidx.media.app.NotificationCompat.MediaStyle()

    2. 运行时会报布局文件错误, 往往是包路径变化了,此时就可以去官方API查看对应的控件具体路径了。比如说 TabLayout 控件

    9810bac5d154

    结语:  好的东西,晚切换不如早切换,迟早要切换不如提前面对。

    更多相关内容
  • 背景: 由于android前期在使用上存在差异化管理,在后期会出现各种冲突问题。google在后期将库整合一个新库,adnroidX系列... AndroidX 中的所有软件包都使用一致的命名空间,以字符串androidx开头。支持库软件包已...

    背景:

    由于android前期在使用上存在差异化管理,在后期会出现各种冲突问题。google在后期将库整合一个新库,adnroidX系列。相对原来的v4和v7,这样便于有效管理。

    AndroidX 对原始 Android 支持库进行了重大改进,后者现在已不再维护。androidx 软件包完全取代了支持库,不仅提供与支持库同等的功能,而且还提供了新的库。

    此外,AndroidX 还包括以下功能:

    1.androidX的前期准备

    如果要在新项目中使用命名空间为 androidx 的库,就需要将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本,并在 gradle.properties 文件中将以下两个 Android Gradle 插件标志设置为 true

    使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。

    compileSdkVersion 28

    在module工程下的gradle.properties新增支持androidX的标志

    • android.useAndroidX:该标志设置为 true 时,Android 插件会使用对应的 AndroidX 库,而非支持库。如果未指定,那么该标志默认为 false
    • android.enableJetifier:该标志设置为 true 时,Android 插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用 AndroidX 依赖项。如果未指定,那么该标志默认为 false
    • android.useAndroidX=true;//是开启androidX,如果设备false,将不会开启
      android.enableJetifier=true//第三方库是否引用androidX,如果使用,将会将第三方库也转为androidX                         

    2.一键转换


     

    2.2点击Migrate to AndroidX,点击Migrate

    这个时候会弹窗,跳出一个是否备份,如果你选择备份,将会保存一个zip的文件。

     2.3会跳出一个转换提示:点击Do Refactor,将执行转换。然后等待IDE自动转换

     转换完可能会存在报错

     AndroidX和库映射对应的文件:

    工件映射:https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings

    类映射:类映射  |  Android 开发者  |  Android Developershttps://developer.android.google.cn/jetpack/androidx/migrate/class-mappings

     可以自行根据官方文档对比,找到对应的工件和库类

    问题:

    1.KeyEventCompat类不存在,

     KeyEventCompat.startTracking(event);无法继续使用,需要用KeyEvent自身来处理  event.startTracking();

    2.28失效 Canvas.MATRIX_SAVE_FLAG
     int flags = Canvas.MATRIX_SAVE_FLAG |
     Canvas.CLIP_SAVE_FLAG |
     Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
     Canvas.FULL_COLOR_LAYER_SAVE_FLAG | 
     Canvas.CLIP_TO_LAYER_SAVE_FLAG;

    解决:
    int sc = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);

    3.如果你使用了kotlin,请将annotationProcessor替换为kapt

    展开全文
  • 总是听到有人说AndroidX,到底什么是AndroidX

    万次阅读 多人点赞 2019-08-26 08:06:59
    不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大学介绍AndroidX的前世今生。 Android系统在刚刚面世的....

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

    Android技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大家介绍AndroidX的前世今生。

    Android系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的API考虑的非常周全。随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问题。

    举个例子,当Android系统发布到3.0版本的时候,突然意识到了平板电脑的重要性,因此为了让Android可以更好地兼容平板,Android团队在3.0系统(API 11)中加入了Fragment功能。但是Fragment的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是Android团队推出了一个鼎鼎大名的Android Support Library,用于提供向下兼容的功能。比如我们每个人都熟知的support-v4库,appcompat-v7库都是属于Android Support Library的,这两个库相信任何做过Android开发的人都使用过。

    但是可能很多人并没有考虑过support-v4库的名字到底是什么意思,这里跟大家解释一下。4在这里指的是Android API版本号,对应的系统版本是1.6。那么support-v4的意思就是这个库中提供的API会向下兼容到Android 1.6系统。它对应的包名如下:

    类似地,appcompat-v7指的是将库中提供的API向下兼容至API 7,也就是Android 2.1系统。它对应的包名如下:

    可以发现,Android Support Library中提供的库,它们的包名都是以android.support.*开头的。

    但是慢慢随着时间的推移,什么1.6、2.1系统早就已经被淘汰了,现在Android官方支持的最低系统版本已经是4.0.1,对应的API版本号是15。support-v4、appcompat-v7库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名的原因了。

    那么很明显,Android团队也意识到这种命名已经非常不合适了,于是对这些API的架构进行了一次重新的划分,推出了AndroidX。因此,AndroidX本质上其实就是对Android Support Library进行的一次升级,升级内容主要在于以下两个方面。

    第一,包名。之前Android Support Library中的API,它们的包名都是在android.support.*下面的,而AndroidX库中所有API的包名都变成了在androidx.*下面。这是一个很大的变化,意味着以后凡是android.*包下面的API都是随着Android操作系统发布的,而androidx.*包下面的API都是随着扩展库发布的,这些API基本不会依赖于操作系统的具体版本。

    第二,命名规则。吸取了之前命名规则的弊端,AndroidX所有库的命名规则里都不会再包含具体操作系统API的版本号了。比如,像appcompat-v7库,在AndroidX中就变成了appcompat库。

    一个AndroidX完整的依赖库格式如下所示:

    implementation 'androidx.appcompat:appcompat:1.0.2'
    

    了解了AndroidX是什么之后,现在你应该放轻松了吧?它其实并不是什么全新的东西,而是对Android Support Library的一次升级。因此,AndroidX上手起来也没有任何困难的地方,比如之前你经常使用的RecyclerView、ViewPager等等库,在AndroidX中都会有一个对应的版本,只要改一下包名就可以完全无缝使用,用法方面基本上都没有任何的变化。

    但是有一点需要注意,AndroidX和Android Support Library中的库是非常不建议混合在一起使用的,因为它们可能会产生很多不兼容的问题。最好的做法是,要么全部使用AndroidX中的库,要么全部使用Android Support Library中的库。

    而现在Android团队官方的态度也很明确,未来都会为AndroidX为主,Android Support Library已经不再建议使用,并会慢慢停止维护。另外,从Android Studio 3.4.2开始,我发现新建的项目已经强制勾选使用AndroidX架构了。

    那么对于老项目的迁移应该怎么办呢?由于涉及到了包名的改动,如果从Android Support Library升级到AndroidX需要手动去改每一个文件的包名,那可真得要改死了。为此,Android Studio提供了一个一键迁移的功能,只需要对着你的项目名右击 → Refactor → Migrate to AndroidX,就会弹出如下图所示的窗口。

    这里点击Migrate,Android Studio就会自动检查你项目中所有使用Android Support Library的地方,并将它们全部改成AndroidX中对应的库。另外Android Studio还会将你原来的项目备份成一个zip文件,这样即使迁移之后的代码出现了问题你还可以随时还原回之前的代码。

    好了,关于AndroidX的内容就讲到这里,相信也是解决了不少朋友心中的疑惑。由于这段时间以来一直在努力赶《第一行代码 第3版》的进度,所以原创文章的数量偏少了一些,也请大家见谅。


    关注我的技术公众号,每个工作日都有优质技术文章推送。

    微信扫一扫下方二维码即可关注:

    展开全文
  • 【解惑】Android Support 和AndroidX

    千次阅读 2021-11-19 18:27:43
    Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个 向下兼容,于是Android团队推出了Android Support Library。 老Android们熟知的下述库 (v后面的数字代表 最低...

    刚来这家公司时,正好赶上项目AndroidX迁移,踩了一些坑,记了些笔记,整理一下发一波~


    0x1、Android Support Library的由来

    Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个 向下兼容,于是Android团队推出了Android Support Library。

    老Android们熟知的下述库 (v后面的数字代表 最低兼容API版本,如4对应Android 1.6) 都属于Android Support Library:

    • com.android.support:support-v4 → Android 1.6,包含Fragment、NotificationCompat等控件,包含v7和v11的基础功能,早期用到;
    • com.android.support:appcompat-v7:xx.xx → Android 2.1,增加了很多Material Design的兼容类和素材,包含v4的全部内容,用得最多;
    • support-v13 → Android 3.2,为平板开发推出的版本兼容包,Android 3.x系统是平板专用系统,用得不多;

    Android版本更新飞快,现在都Android 12了,国内APP基本都最少兼容Android 5.1 (API 21),这种v4、v7的命名早已没太大的意义。

    0x2、AndroidX Library的出现

    从Android 9.0 (API 28) 开始,appcompat-v7:28.0.0 作为 Support Library的 终结版本,未来的新特性和改进都会进入AndroidX Library。升级内容主要有两个方面:

    • 包名 → Support Library 中的API包名都是 android.support.,而AndroidX Library中的API都变成androidx.,意味着后续android.*包下的API都是随系统发布的,而androidx.包下的API都是随着扩展库发布的,API基本不依赖于操作系统的具体版本;
    • 命名规则 → AndroidX Library 中所有的库命名规则不再包含具体的操作系统API版本号,如下面的appcompat-v7变成了appcompat库;
    api 'com.android.support:appcompat-v7:28.0.0'
    api 'androidx.appcompat:appcompat:1.0.0'
    

    0x3、从Support过渡到AndroidX

    一键迁移

    AS 3.2及以上版本提供了一键迁移到AndroidX的功能,依次点击菜单栏的 Refactor → Migrate to AndroidX

    注:一键迁移,compileSdkVersion需大于等于28,否则会提示:You need to have at least have compileSdk 28 set in your module build.gradle to refactor to androidx。

    如果迁移失败,就重复下面的①②③④步进行手动迁移吧~

    ① 版本要求

    • Android Studio → 升级到3.2及以上;
    • Gradle插件 → 升级到4.6及以上,可在gradle/wrapper/gradle-wrapper.propertie 中修改distributionUrl指向版本号;
    • compileSdkVersion → 升级到28及以上;
    • buildToolsVersion → 升级到28.0.2及以上;

    ② 迁移AndroidX配置

    在项目的gradle.properties文件中添加下述配置:

    # 当前项目启用androidx
    android.useAndroidX=true
    
    # 将依赖包也迁移到androidx,一般写true
    # 如果设为false表不迁移依赖包到 androidx,如果有第三方依赖可能会出问题
    android.enableJetifier=true
    

    ③ 修改依赖库

    参照AndroidX变化中的依赖库映射改,可直接查 官方文档 或下载映射的 CSV文件,修改示例如下:

    implementation com.android.support:cardview-v7
    替换成→ implementation  androidx.cardview:cardview
    
    implementation com.android.support:collections
    替换成 → implementation androidx.collection:collection
    
    implementation com.android.support:coordinatorlayout
    替换成 → androidx.coordinatorlayout:coordinatorlayout
    

    ④ 依赖类重新打包

    参照AndroidX变化中的类映射改,可直接查 官方文档 或下载映射的 CSV文件,修改示例如下:

    import android.support.v7.app.AlertDialog    
    修改成 → import androidx.appcompat.app.AlertDialog
    
    import android.support.v7.app.AppCompatActivity
    修改成 → import androidx.appcompat.app.AppCompatActivity
    

    Tips:对了,还可能需要手动对混淆文件proguard-rules进行修改~

    0x4、一些问题收集

    ① Support 和 AndroidX 能共存吗?

    答:不可以,只能选一种。

    ② 执行完Migrate to AndroidX后就完成AndroidX迁移了?

    答:不一定,部分报名/路径名转换可能有问题,有些还需手动调整 (xml、java、kt)

    ③ DataBinding中的错误(重名id错误)?

    androidx中对错误的检查和处理更严格,同一个xml布局文件中存在同名id会报错。

    ④ attr.xml 中重复的属性名称会报错?

    答:自定义控件编写自定义属性,不能与android已有属性重名,如textSize必须使用android:textSize。

    ⑤ Glide注解不兼容AndroidX

    答:Glide升级到4.8.0以后,具体可见官方issues

    ⑥ 没有迁移到androidX,却出现Support库和AndroidX库冲突?

    答:大概率是依赖的第三方库用到了AndroidX,可执行 gradlew :app:dependencies 查看第三方的依赖树,直接搜androidx的包。看官方从是哪个版本开始引用androidx库的,回退到之前的版本即可。另外,建议引用依赖库时使用具体的版本,而尽量避免使用latest.release或+方式。

    参考文献

    展开全文
  • AndroidX和旧版本包对照表: 最下面是使用方法: 旧包 AndroidX android.arch.core:common androidx.arch.core:core-common:2.0.0-rc01 android.arch.core:core androidx.arch.core:core:2.0.0-rc01 ...
  • android项目迁移到androidX:类映射(android.support.v7*)

    千次阅读 多人点赞 2020-05-25 15:00:08
    AndroidX 类 android.support.v7.app.ActionBar androidx.appcompat.app.ActionBar android.support.v7.app.ActionBarDrawerToggle androidx.appcompat.app.ActionBarDrawerToggle android.support....
  • android项目迁移到androidX:类映射(android.support.v4*)

    千次阅读 多人点赞 2020-05-25 15:01:27
    AndroidX 类 android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat androidx.core.accessibilityservice.AccessibilityServiceInfoCompat android.support.v4.app....
  • AndroidX迁移和方法

    千次阅读 热门讨论 2021-02-19 15:17:08
    迁移到 AndroidX AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类名、方法名和字段名没有变化。 注意:我们建议在单独的分支中执行迁移。此外,还应设法...
  • 迁移Android项目到AndroidX2. 新旧工件映射关系表3.新旧类映射关系表 1.迁移Android项目到AndroidX     由于Google以后将不再维护更新android.support库,因此有必要将原有项目迁移至androidx库。     ...
  • 安卓升级AndroidX手把手教程

    千次阅读 2019-05-07 19:29:54
    突然发现好多安卓项目已经改为了AndroidX,那么自己的项目也该升级一下了。下面是AndroidX的官方文档的概述。 AndroidX概述 AndroidX是Android团队用于在Jetpack中开发,测试,打包,版本和发布库的开源项目 ...
  • 一键将 android v7 改成 androidx

    千次阅读 2021-11-18 23:48:04
    刚开始我想把别人android v7 项目改成 androidx 项目时,就是一个一个去删除再导包,真的傻
  • Android 系统源码中添加 androidx 依赖

    千次阅读 2022-02-11 22:25:54
    Android 系统源码中添加 androidx 依赖 AndroidX 是对 android.support.xxx 包的整理后产物。由于之前的 support 包过于混乱,所以,Google 推出了AndroidX。 Android 版本 28.0.0 (9.0)是支持support库的最后一个...
  • AndroidX和android.support对照表

    千次阅读 2019-10-09 14:54:00
    android.support AndroidX android.arch.core:common androidx.arch.core:core-common:2.0.0-rc01 ...
  • Support库与AndroidX对应关系

    千次阅读 2020-05-27 12:00:28
    来源 支持库映射: https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings 类映射: ... ... AndroidX build artifact android.arch.core:com
  • AndroidX(1)androidx.core.core:1.0.0解析

    千次阅读 2020-05-29 01:01:38
    AndroidX出来一段时间了,从09年开始一直在做公司的quickstart和组件化的东西,基础框架搭建这一块也算是有一些成绩。从原来的功能的抽象的封装,到现在系统性质研究。 正文 新的项目启动,有利于做一些前沿技术的...
  • androidx使用Toolbar

    千次阅读 2020-12-02 16:31:48
    androidx使用Toolbar 将默认标题栏改为隐藏状态 <resources> <!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize ...
  • android.support.test.rule.... androidx.test.rule.ActivityTestRule android.support.test.rule.DisableOnAndroidDebug androidx.test.rule.DisableOnAndroidDebug android.support.test.r...
  • 开始报错: This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled....The following AndroidX dependencies are detected: androidx.fragment:fragment:1.2.5, and
  • 一、在module下的buid.gradle文件添加 implementation 'com.google.android.material:material:1.0.0' ...<android.support.design.widget.FloatingActionButton android:id="@+id/myFAB" ...
  • Android attribute provider#androidx.core.content.FileProvider
  • 第三方库support换androidx

    千次阅读 2022-04-01 19:28:46
    android.useAndroidX=true 表示“Android插件会使用对应的AndroidX库,而非Support库”;未设置时默认为false; android.enableJetifier=true 表示Android插件会通过重写其二进制文件来自动迁移现有的第三方库,以...
  • android 与 androidx 不能共存
  • Android -- AndroidX

    千次阅读 2019-02-19 14:12:24
    今天在 Android Studio 上新建了个项目,引入 butterknife:10.0.0,运行后居然抛出了异常: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app....
  • AndroidX了解一下

    万次阅读 多人点赞 2018-08-06 09:25:31
    1.前言 我选取了几个常用依赖库,我们可以看看变化: Old build artifact AndroidX build artifact com.android.support:support-compat ... androidx.core:core:1.0.0+ ... androidx.appco...
  • 官方文档地址: https://developer.android.google.cn/jetpack/androidx/migrate#migrate 工件映射 下表列出了从旧工件到新工件的当前映射。您也可以下载这些映射的CSV 格式文件。... androidx.arch.cor...
  • android项目迁移到androidx

    千次阅读 2020-05-28 10:33:37
    1.Android Studio自带可以把项目升级为Androidx 2. 在gradle.properties文件添加 android.useAndroidX=true android.enableJetifier=true 3.修改java类引用 修改前import android.app.FragmentManager; 修改后...
  • AndroidX 类 android.support.design.animation.AnimationUtils com.google.android.material.animation.AnimationUtils android.support.design.animation.AnimatorSetCompat ...
  • AndroidX 迁移步骤,一篇就够了

    千次阅读 2020-07-24 18:18:24
    AndroidX 迁移 2018 年 I/O 大会后,Google 宣布将 Support Lib 重构为 AndroidX 的计划,随后便在 Support Lib 28 上进行了重构。然而因为后续不会在 Support Lib 上修复 bug 或者发布新功能,而且 Support Lib 和 ...
  • 【AS-AndroidX】迁移AndroidX带来的问题

    万次阅读 2019-11-12 12:50:17
    ---------------------------------------------------------------------------------------------...迁移主原文:https://blog.csdn.net/dandelionela/article/details/102976961 # 【AS-AndroidXAndroidX的迁...
  • AndroidX适配教程

    千次阅读 2019-08-14 14:58:21
    AndroidX概述 AndroidX是Android团队用于在Jetpack中开发,测试,打包,版本和发布库的开源项目 。AndroidX是对原始Android 支持库的重大改进 。与支持库一样,AndroidX与Android操作系统分开提供,并提供跨Android...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 521,694
精华内容 208,677
关键字:

AndroidX