Android-AndroidX迁移及踩坑

大家都知道Android support library 28是google发布的最后一版android.support的库了,原因是google同时发布了androidx 1.0.0 第一个正式版本。发布androidx的理由是:Support包依赖混乱,AndroidX是对Support的整理。所以早晚都要把项目依也迁移到 Androidx ,而我也将项目迁移到了AndroidX包,这里记录一下步骤和遇到的问题。

提前准备

AndroidX的迁移要求在在AndroidStudio 3.2 或更高版本中执行,要求的targetSdkVersion版本为9.0即28.也就是我们的 classpath 'com.android.tools.build:gradle:3.2.0'要3.2.0或者更高。 也就时在我升级tools.build的时候遇到了问题:始终下载失败3.2.0,不知道咋回事,困扰了好久? 这个问题的解决参考:https://www.cnblogs.com/whycxb/p/9760805.html 最终的解决办法是:

  • (1).添加 mavenCentral()仓库支持

image.png

  • (2).翻墙,并设置“代理全部流量”。 我这里翻墙用到的是蓝灯,步骤如下: 直接打开蓝灯链接成功后,浏览器可以访问,但As还要做其他设置,如图打开蓝灯的设置:

image.png 选高级设置:

image.png 然后获取ip和端口:

image.png 打开As,File—>Settings—>Appearance & Behavior-->System Settings-->HTTP Proxy—>Manual proxy configuration 选择HTTP,host name填127.0.0.1,Port number 填之前你lantern上的端口号:52593。

image.png

Apply即可,然后你就可以下载tool.build:gradle3.2.0即以上版本了。

迁移项目

如果你的项目已经开发部分了想引入AndroidX包的支持,只需要两步: 第一步:.在你的 gradle.properties 文件中添加:

## 表示使用 androidx
android.useAndroidX=true
##表示将第三方的依赖库也迁移到 androidx,如果你的项目中没有依赖库可以设置为false
android.enableJetifier=true

第二步:.菜单栏 Refactor -> Migrate to Androidx 就可以了,Android Studio 会自动把你项目中的依赖切换到 Androidx,并且修改项目中使用到依赖库的路径。

项目踩坑

  • 首先你在编译完成后,要手动更改依赖库路径,比如我们的Fragment或AppCompatActivity等的地址都要变成androidX包下的,如:import androidx.appcompat.app.AppCompatActivity;
  • 使用android.enableJetifier=true将项目中使用的第三方库也迁移到 Androidx,迁移后还需要 Flie -> Invalidate Caches /Restart 一下。
  • 其次大部分都是注解处理器会产生冲突,也就是有的第三方版本还没有添加androidx的支持,比如我遇到的: (1).

image.png

找了半天才发现是buterknife的问题,还好butterknife已经添加了androidX的支持,只需要升级到最新的版本就好了,如:

image.png

另外在app的build.gradle中:

image.png

(2).还有Glide依赖也要改变,glide也添加了AndroidX的支持:

image.png

代码中的写法也变了,需要通过一个RequestOptions:

     //升级到4.8版本之后的新写法
        RequestOptions requestOptions = new RequestOptions()
                .placeholder(R.mipmap.ic_launcher)
                .error(R.drawable.errorview)
                .fallback(new ColorDrawable(Color.RED));

        Glide.with(mContext).load(imgUrl[position]).apply(requestOptions).into(imageView);

(3).其他类似 比如dagger 等注解冲突的,要不添加最新支持androidX的依赖,要不降低版本版本。

  • 其他就是包名命名要规范,不允许同一个xml文件中有id重复的问题存在
  • 再有就是根据错误信息灵活应对。

早点开始你的AndroidX迁移之旅吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券