美文网首页
android项目转androdx

android项目转androdx

作者: DreamMeng | 来源:发表于2021-03-09 20:55 被阅读0次

    一、androidx为何物?

          提到Androidx,你可能会有些陌生,是一种新技术吗?但support-v4、appcompat-v7库,相信每个Android开发的同学都用过,这个两个库同属android support库,那你知道v4或v7的含义吗? 4是指android api的版本,对应的系统版本是1.6,意思是这个库提供的api兼容到1.6,同理7对应的是系统版本是2.1,但随着时间的推移, v4/v7库已早不支持1.6、2.1的这些古老系统api,显然v4,v7这种根据系统版本的命名已显得名不副实和难以维护。

         因此android官方推出了andoridx,命名不再依据api版本,所有api统一放到androidx.*下, 其实AndroidX 是对原有 Android Support Library的一次重大升级和整理,并不是一种全新的技术。androidx 软件包完全取代了支持库,不仅提供与支持库同等的功能,而且还提供了新的库。

       谷歌官方已明确未来以androdx为主,support库将不再更新维护,版本 28.0.0 是支持库的最后一个版本,并且在新版本的android studio中,新建项目已默认强制使用AndroidX架构了,所以我们有必要将项目转成androidx。

    二、迁移项目到androidx 

        (1)  将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本

       (2)Refactor--->Migrate to AndroidX

    支持库与Androidx 映射关系

    https://developer.android.google.cn/jetpack/androidx/migrate/class-mappings

    三、迁移Androidx遇到问题记录

    (1)gradle6.5 编译打release包 报Error:java.lang.OutOfMemoryError: GC overhead limit exceeded,设置"org.gradle.jvmargs=-Xmx4096m -Xms4096m" 、"dexOptions{     javaMaxHeapSize"4g"    } 均无效,最终升级gradle到6.8.2问题解决

    (2)升级androidx后,切换fragment 报“NullPointerException: androidx.fragment.app.FragmentManagerImpl.isDestroyed()”崩溃,经过检查 fragment 有段为之前解决fragment嵌套的bug:"java.lang.IllegalStateException: No activity"的代码:

    网上说新版androdx已经解决此bug,删除此代码后,崩溃得以解决。

    相关文章

      网友评论

          本文标题:android项目转androdx

          本文链接:https://www.haomeiwen.com/subject/dzlyiqtx.html