【Android笔记】记录老项目迁移到Gradle8.0遇到的问题以及解决方法

前言

公司的投屏项目几年前由三方开发,现公司因业务需要进行二次开发,从仓库拉下来后准备开干,结果项目已经无法正常编译了。项目用的还是gradle5.1build:gradle:3.4.2,组件库用的都是老的support库,看到这里,就明了了,把项目迁移到高版本了,不然后续工作将进行不下去,整个过程是十分痛苦的,问题百出,下面将记录下迁移的过程,遇到的问题以及解决的方法。


说明

总结下迁移的大致步骤和遇到的问题:

  • support组件库迁移到AndroidX
  • libraryaar库在主module中引用
  • app运行过程主module中无法加载library中的so

迁移步骤


一、新建项目、修改布局文件

新建项目,将老项目的主类、资源文件、依赖库等迁移到新建项目中,项目报错,这个问题平时开发中也会遇到,布局文件有异常,先查看下布局文件。

报错信息:

cvc-complex-type.2.4.a: Invalid content was found starting with element ‘base-extension’. One of ‘{layoutlib}’ is expected.

在这里插入图片描述

上面介绍过项目还是用的support组件库,高版本全部迁移使用androidx,如下图中ConstraintLayout使用的是support包下的组件,项目里类似的还有RecyclerViewTableLayout等等。

在这里插入图片描述

1、在gradle.properties中添加AndroidX支持。

android.useAndroidX=true    //启用androidx
android.enableJetifier=true  //启用 Jetifier 工具。Jetifier 是一个工具,可以自动将第三方库中使用的旧支持库引用转换为 AndroidX 引用。这样可以确保即使某些库还没有迁移到 AndroidX,Jetifier 也能帮助自动转换

2、如下图,AS打开项目 >> 菜单栏 Refactor >> Migrate to AndroidX…
在这里插入图片描述
按照提示的步骤进行操作即可,当然项目中还是会有迁移不成功的地方,以及导包问题,项目比较大还是比较痛苦的,需要一个个修改直至全部迁移至AndroidX


二、Library库中依赖的aar包

报错信息:

Direct local .aar file dependencies are not supported when building an AAR.
构建 AAR 时不支持直接本地 .aar 文件依赖。

在Debug模式下运行和打包没有问题,打Release包的时候会提示这个错,主Module >> 依赖module << aar库,怀疑是高版本不支持这种套娃式的依赖模式。
在这里插入图片描述
那就把serenegiant-1.19.aar独立出来,所有的地方都可以引用就可以解决此问题。步骤如下:

1、项目根目录下新建serenegiant-library文件夹,新建build.gradle,把serenegiant-1.1.9.aar放到文件夹下

在这里插入图片描述

2、新建的build.gradle中添加配置依赖

在这里插入图片描述

3、项目settings.gradle中添加此依赖库

在这里插入图片描述

4、用到这个aar包的module中引入

在这里插入图片描述
至此,顺利了解决依赖嵌套所带来的问题。


三、主module无法加载依赖module中的so库

报错信息:

com.xxx.screensync.xxxxx … couldn’t find “libstreamer.so”

提示主类(上面是主类包名)无法加载libstream.so,so库是在screensync中加载的,主module无法加载so,确认so库有没有生成以及被打包到apk中,如果有,那就是引入的问题。
解压apk后可以看到在lib/armeabi-v7a中是有libstream.so的,那就是主module没有正确引入so库。

在这里插入图片描述

查看screensyncbuild.gradle中已经正确引入。

在这里插入图片描述在这里插入图片描述

appbuild.gradle中没有此配置,在低版本的Gradle中不引入是能够正常使用,升级后猜测是加载so库的策略发生了改变,故将appbuild.gradle也添加此配置即可。


结束.

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中配置Gradle 8.0,你需要进行以下步骤: 1. 在build.gradle文件中添加以下配置: ``` buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } } } ``` 这将添加Gradle插件的仓地址。 2. 在settings.gradle文件中修改为以下配置: ``` pluginManagement { repositories { mavenLocal() maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/spring-plugin' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } gradlePluginPortal() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenLocal() mavenCentral() maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } } } ``` 这将配置Gradle插件的管理和依赖解析。 请注意,以上配置中的URL是阿里云的仓地址,你也可以根据需要修改为其他适合你的仓地址。同时,这些配置也可以根据你的项目需求进行调整。 参考料: \[1\] 链接:https://www.jianshu.com/p/42b2bd27b72c #### 引用[.reference_title] - *1* *2* [Android Studio gradle 8.0 版本安装出现 Read Timed Out](https://blog.csdn.net/qq_34438486/article/details/130906478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [离线安装android studio之---离线配置gradle(附gradle下载地址)](https://blog.csdn.net/Crystal_xing/article/details/108281846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值