android将Gradle从3.x升级到7.x的过程

android将Gradle从3.x升级到7.x的过程,第1张

这些天为了在老的项目上使用Compose,于是将Gradle从3.3.3 升级到了7.0.4,其中经历了百来个Error的折磨,一点一点的解决后,终于成功run起了项目,将踩过的坑分享出来,以便同样需求的人参考。

1:依赖方式的改变:

buildscript或者allProjects,老的项目依赖了许多的jecenter仓库与maven仓库,在gradle升级后,很多时候会爆仓库不安全错误,其中有LIKE(HTTPS)字样,需要将地址从http改为https,例如:

maven { url "http://jitpack.io" }  --> maven { url "https://jitpack.io" }

而有些仓库地址 只有http的版本时,需要添加allowInsecureProtocol去绕过检测,如:

maven {
    allowInsecureProtocol(true)
    url "http://mvn.mob.com/android"
}

2:compileSdkVersion与targetSdkVersion版本改变

这个根据error提示,改成需求的队友版本即可,不过参与编译的只有compileSdkVersion,所以根据实际情况来就可以了,注意去sdkmanager中下载需要的版本

3:一些语法上的更改

compile改为implementation或者api,implementation可以认为private,只允许当前model使用的依赖,api是public,别的model依赖当前包后,如果当前包依赖申明为api,则后者默认也依赖了这个包(有些扰,简而言之,implementation依赖的包体只能在当前model使用,api依赖的包体,可以当这个model被依赖时,被使用)。

apply plugin ‘xxx’ 更改为 plugins{ id 'xxx' id'xxx'}方式

4:当找不到sdk依赖时

有一些厂家,当gradle升级后,你在他的仓库里找不到依赖路径的包(例如阿里百川),而你出于各种考虑并不想去升级这一部分的sdk,且他的仓库已关闭,你获取不到老版本的sdk,这时你可以尝试下我的思路->

         (1):运行老版本工程,sync工程,获得申明的各种sdk

         (2):在gradle缓存中,找到对应包名的aar或者jar,将其移动至升级工程中,然后以本地化依赖的方式进行,gradle缓存地址,以mac为例在.gradle/caches/modules-2/file-2.1中,其中 .gradle为隐藏文件,command+shift+. 这个组合按键可显示出,然后根据aar对应的包名去寻找对应的aar包体,例如:

        

 以上能解决大部分sdk找不到的问题

5:gradle.properties中有一些以前的配置不再需要,可进行删除,例如:

com.android.build.gradle.overridePathCheck=true
android.enableD8.desugaring=false

6: gradleJDK依赖版本,通常都会从 1.8 改为11,如下->

 

 

7:一些其他的问题:

可能会存在一些其他的sdk包体编译报错或者运行报错的问题,这时一般error信息会比较清晰的展示出来,例如github上面的sdk错误,很多时候在其仓库的issues中都会存在,找到并修复就好,

还有一些硬性的plugin找不到的,这时基本只能去其官网或者仓库,升级到新版本再编译。

总结:升级不易,且行且珍惜(坑太多了) 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992375.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存