低版本AndroidStudio项目升级到高版本

之前的android个人项目有一年多没有维护了,尽两年的重心也主要是小程序开发及.net,.net core相关开发,android从8以后开发比较少了,主要是维护,而因为电脑一直没换,所以维护也仅仅是解决部分bug,没有做大版本升级…

近一个月来,不管是公司电脑还是个人电脑都换了,然后重新安装了新的as及相关插件,于是,打开旧项目就有很多问题了,最初是原项目gradle版本过低,新装的5.4.1,项目中用到的是3.5.3,编译时老提示最低编译版本为26,然后又是butterknife版本用了10.2.1,然后提示对应build sdk要用28,于是,又有一大堆问题需要去解决。

这里记录下Android低版本升级到高版本后的几个问题及解决方案:

问题一:butterknife10.2.1与android Api 28.0.0 support-v4/v7库冲突问题

因为太久没搞android,所以这一问题花了些时间去处理,后来出现了androidx替代v4/v7包,于是找到了对应的解决方案:gradle.properties中增加下面两句(其实28新建项目会带有这两句,只是我这是老项目,所以没有,需要手动添加)

android.useAndroidX=true
android.enableJetifier = true

然后gradle sync,之前用到v4/v7的地方会报错,这里我也暂时没啥好方法,只有一个个改,能想到的简单点的操作有两点:1.使用ctrl+R替换,2.用alt+enter自动添加import;这里需要注意的是不仅仅是类中需要改,布局文件中,AndroidManifest.xml中也可能要改。

ps: 后来发现这里有比较轻松的解决方法,在gradle和build sdk切换为高版本后使用Migrate to Androidx自动替换v4/v7位androidx,  https://www.jianshu.com/p/f7a7a8765294

问题二:butterknife的@Bind(R.id.xxx)找不到

用@BindView(R.id.xxx)替换,全局替换下即可

问题三:java.lang.BootstrapMethodError: Exception from call site #0 bootstrap method问题

这里需要在build.gradle的android节点下增加

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

以及,Refactor菜单,点击Migrate to Androidx

问题四:Flag android.useDeprecatedNdk is no longer supported and will be removed in the next…

这里去掉gradle.properties中的android.useDeprecatedNdk=true,换成在build.gradle中使用cmake即可

问题五:butterknife.bind()后,控件对象还是null

在gradle中应用butterknife,应该以下两句都有

implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'

问题六:Glide的crossfade没有该方法

使用  .transition(withCrossFade()) 替代 .crossFade()

 

其实还有很多其他问题,只是这几个问题是刚解决的,还留有一些记忆,就先记录下来,后续再汇总其他问题

个人博客: IT老五    简书:ThinkinLiu

源创不易,允许转载,来源误删,多谢合作
IT老五(it-lao5):关注公众号,一起源创,一起学习!

历史上的今天:

发表评论

必填项已用*标注