由于迟早要迁移到androidx,领导就把这个任务给了我。网上关于Androidx的介绍基本照抄的官方,或是写一个简单的HelloWorld Demo作演示,但是我希望知道的是在庞大或者有很多第三方依赖的项目中如何迁移到Androidx。既然网上没找到想要的,那就只能自己摸索了,最后在大神的帮助下终于迁移成功,感谢坐我旁边的大神。
下面是对我自己项目迁移的经验总结,供参考:

关于Androidx

  • Androidx其实就是将Android Support Library中的代码改包名移到了androidx,为了解决support-v4、v7包依赖的混乱问题。
  • 关于什么是Androidx可以看下郭神的这篇博客
  • 谷歌官方文档提供了support包与Androidx库的对应关系等,这是传送门

迁移总结

  1. Android Studio菜单:Refactor > Migrate to AndroidX,一路点确定即可,然后运行项目,如果报错就对了,往下看。

  2. 迁移完后gradle.properties文件会多出这两句:

    • android.useAndroidX=true,这个不解释

    • android.enableJetifier=true,这个的官方解释是:Android 插件会通过重写其二进制文件来自动迁移现有的第三方库以使用 AndroidX。意思是如果你的第三方库依赖了support包且其没有升级到Androidx,没关系,AndroidStudio在打包的时候会把这些support包都改为Androidx包。 所以这个值设为ture后那些依赖了support包的第三方依赖可以不用改。

      但是,那些通过注解等方式在build目录中生成的代码如果依赖support包的话就不行了。那么哪些第三方依赖会有这种问题呢?

  3. 有问题的第三方依赖:

    • butterknife
    • glide
    • deeplinkdispatch,这个依赖主要是用于外部链接跳转指定页面
  4. 解决方法也很简单,将它们升级到新版本

    • butterknife

      插件版本:classpath 'com.jakewharton:butterknife-gradle-plugin:10.0.0'

      依赖版本:

      api "com.jakewharton:butterknife:10.0.0"
      api "com.jakewharton:butterknife-compiler:10.0.0"
      
    • glide,依赖版本:

      api "com.github.bumptech.glide:glide:4.10.0"
      api "com.github.bumptech.glide:compiler:4.10.0"
      api "com.github.bumptech.glide:okhttp3-integration:4.10.0"
      
    • deeplinkdispatch, 依赖版本:

      api "com.airbnb:deeplinkdispatch:4.1.0"
      api "com.airbnb:deeplinkdispatch-processor:4.1.0"
      

      以上升级的版本有些不是最新版,因为最新版可能对gradle插件版本有要求。目前我的gradle版本是gradle-4.6-all.zip,插件版本是'com.android.tools.build:gradle:3.2.1'

  5. 改到这里应该就可以运行的,但是还是出现dontwarn报错,发现是混淆的问题,这种情况可能是升级的第三方依赖混淆有改动,看官方文档即可。

  6. 还有关键一步:全局搜索supportv4v7designapp:layout_behavior等,确保都改了。尤其是用到CoordinatorLayout的地方,他的app:layout_behavior属性值引用的可能还是support包的。

  7. 最后,附上我的项目中不需要改动的第三方依赖不完全名单:

项目 Value
gson ‘com.google.code.gson:gson:2.7’
greendao ‘org.greenrobot:greendao:3.2.0’
joda-time ‘joda-time:joda-time:2.9.7’
SmartRefreshLayout ‘com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-5’
leakcanary-android ‘com.squareup.leakcanary:leakcanary-android:1.6.3’
leakcanary-android-no-op ‘com.squareup.leakcanary:leakcanary-android-no-op:1.6.3’
blockcanary-android ‘com.github.markzhai:blockcanary-android:1.5.0’
blockcanary-no-op ‘com.github.markzhai:blockcanary-no-op:1.5.0’
bugly ‘com.tencent.bugly:crashreport:latest.release’
bugly ‘com.tencent.bugly:nativecrashreport:latest.release’
wechat-sdk-android-without-mta ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’
tencent tbssdk ‘com.tencent.tbs.tbssdk:sdk:43697’
高德map2d ‘com.amap.api:map2d:latest.integration’
高德地图搜索 ‘com.amap.api:search:latest.integration’
zxing-library ‘cn.yipianfengye.android:zxing-library:2.1’
rxjava ‘io.reactivex.rxjava2:rxjava:2.2.1’
rxandroid ‘io.reactivex.rxjava2:rxandroid:2.1.0’
arouter-api ‘com.alibaba:arouter-api:1.4.1’
arouter-compiler ‘com.alibaba:arouter-compiler:1.2.2’
glide-transformations ‘jp.wasabeef:glide-transformations:4.1.0’
flexbox ‘com.google.android:flexbox:1.0.0’
walle ‘com.meituan.android.walle:library:1.1.6’
multitype ‘me.drakeet.multitype:multitype:3.4.4’
oneapm ‘com.oneapm.agent.android:agent:5.5.4.0’

Android项目迁移到Androidx经验总结相关推荐

  1. android项目迁移到androidX:类映射(android.support.v4*)

    支持库类 AndroidX 类 android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat androidx.core ...

  2. 【译】将 Android 项目迁移到 Kotlin 语言

    本文讲的是[译]将 Android 项目迁移到 Kotlin 语言, 原文地址:Migrating an Android project to Kotlin 原文作者:Ben Weiss 译文出自:掘 ...

  3. 跑步节奏音乐匹配Android项目开发和调试经验

    1.阅读开源计步器项目pedometer项目找到项目相关部件,paceNotifer.其在SenserEventlistener中被回调. 在其中判断本来直接更新到界面上面的步频范围数据.根据划分的范 ...

  4. android studio迁移,AndroidStudio 一键迁移至 AndroidX

    在上篇文章 <关于 MVPArms 兼容 AndroidX 的问题> 中,我犯了一个致命的错误. 我没升级 AndroidStudio 到最新版, 是的, 我的 AndroidStudio ...

  5. Android开发之将AndroidX项目改为非androidX(android.v7.support)的方法

    老套路上图:看看我目前AndroidX依赖的库文件 修改方法: 1.打开gradle.properties文件将文件里面的下面两个属性 android.useAndroidX=true android ...

  6. 如何快速将Android Support Library项目升级到AndroidX

    项目名右击 → Refactor → Migrate to AndroidX 有些项目会报错: you need to have compileSdk set to at least 28 in yo ...

  7. android circleimageview 导入到eclipse,android项目从Eclipse迁移到Android studio中常见问题解决方法.pdf...

    android项项目目从从Eclipse迁迁移移到到Android studio 中中常常见见问问题题解解决决方方法法 android项目从Eclipse迁移到Android studio中经常会遇到 ...

  8. eclipse项目迁移到android studio(图文最新版)

    最近Android studio(下文简称AS)官方发布了正式版,目前火得不行.个人认为主要是因为android是google自家的产品,AS也是他自己搞的IDE,以后的趋势android开发肯定会用 ...

  9. buidulbs android.jar,在将AS项目迁移到IDEA时,无法将com.android.bui...

    我需要从Android Studio迁移到IntelliJ IDEA,因为我需要在Java中进行其他一些非Android的工作.我从git克隆了我的项目,并将其导入到IDEA中.但是,我在此过程中遇到 ...

  10. Android项目升级AndroidX

    官网:https://developer.android.google.cn/jetpack/androidx/migrate 强烈建议:把项目升级到AndroidX一定一定要新建分支来操作,不然升级 ...

最新文章

  1. SQL Server(五)——常用函数
  2. 在室内停车场使用道路标记语义进行厘米级建图和定位
  3. 软件定义闪存存储系统关键技术
  4. hibernate自动添加永真1=1,导致Druid sql防火墙报错的问题
  5. 问题用户小米科技CEO雷军:千万别把用户当上帝
  6. wukong搜索引擎源码解读
  7. svn: Can't convert string from 'UTF-8' to native encoding
  8. SCVMM 2012 R2运维管理九之:添加非信任的Hyper-v主机和群集
  9. “过午不食”实锤了!协和医院最新研究:每天6:00-15:00进食,其它时间不吃饭!...
  10. java之线程相关juc
  11. Atitit 文件远程传输读写协议 scp http ftp nfs webdav smb D:\Program Files\Git\usr\bin\scp.exe 4.密码安全策略不完善 在
  12. paip.支付宝即时到账接口改双功能接口.txt
  13. PHP面向对象笔记(兄弟连)
  14. 产品经理面试问题及答案大全《一》
  15. Kylin V10 SP2 定制openssh 9.0 rpm包
  16. echarts实现省份迁徙图
  17. torch 显存管理
  18. nginx 启动 报错,80端口被占用问题,80端口无法杀掉问题
  19. 增加收入的 6 种方式
  20. 前端:给中国奥运金牌数做可视化

热门文章

  1. Java实现 蓝桥杯 算法训练 递归求二项式系数
  2. ftp 服务器管理工具,5款最好用的ftp 服务器管理工具
  3. 分析力学复习笔记(更新中)
  4. 约克大学计算机语言班,约克大学语言班申请
  5. qt textbrowser的边界框怎样改变颜色_专访天使投资人续沛川:用深度思考打破人生边界,拥有张力一生...
  6. atmega128 单片机 20以内加减法训练机 做的过程
  7. 对象数组中根据某个属性名的值相同,求某一项的和。
  8. git-修改commit信息
  9. redis 通道 java_【java】netty4,服务端向客户端主动发消息怎么把channel存储到redis缓存中?...
  10. java文字生成图片