2022年Android Studio正确配置并构建运行Android老项目解决方案(Build, Run, Legacy)

博主遇到一个2017年的Android项目在2020年运行时出现Gradle兼容性问题。错误提示Gradle版本不支持某些方法。解决方案是更新Gradle和GradlePlugin到最新版本,如2020年12月的6.5和4.1.1。此外,还需添加google()仓库并配置国内可访问的Maven源以解决依赖下载问题。经过这些步骤,项目成功编译并运行。
摘要由CSDN通过智能技术生成

1 问题背景

博主最近要有一个学习任务:

掌握OkHttp的使用方法:
1.get、post请求 传递参数
2.OkHttp进行get请求下载文件
3.下载文件的同时 利用前期掌握的线程知识 显示下载进度

因此博主想找一个基于OkHttp实现的多线程、断点续传Android下载工具项目,并参考其中的源码。接着有幸阅读到了这篇文章:Android 实现一个简单的文件下载工具,其具体详细介绍了如何从零创建一个多线程、断点续传的下载工具APP,同时提供了这个项目的GitHub网站:Github-SheHuan/DUtil

但是现在的问题在于:这个项目是2017年4月搭建的,博主在2020年12月把这个Android项目导入Android Studio时,遇到了各种不兼容的Bug,幸运的是最终解决了这些兼容问题,因此想通过这篇博客记录本次Android Studio正确配置并运行Android老项目解决方案。

同样的问题,在2022年1月13日,博主我需要构建安卓新手引导蒙版库huburt-Hu/NewbieGuide,它是一个Android 快速实现新手引导层的库,通过简洁链式调用,一行代码实现引导层的显示。目前这个项目的最后更新时间为2019年6月27日,该项目的Gradle包版本号为4.4,安卓Gradle工具版本号是3.1.2,而博主用的是2022年的“Android Studio Arctic Fox | 2020.3.1 Patch 4”,果不其然,参照原有的代码,我们是无法构建成功项目的,提示部分库找不到。最终该项目的解决方案便是:升级Gradle和Gradle Plugin的版本号、配置国内可访问的Maven仓库链接、升级“com.android.support:appcompat-v7”库至“androidx.appcompat:appcompat”。

2 问题复现

通过git clone https://hub.fastgit.org/SheHuan/DUtil.git命令从远程仓库把代码下载到本地。
在这里插入图片描述
接着在Android Studio中打开这个项目。
在这里插入图片描述
果不其然,Android Studio的Event Log提示我们出错了:

11:48 AM	
Gradle sync failed: Unsupported method: SyncIssue.getMultiLineMessage().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.
Consult IDE log for more details (Help | Show Log) (11 s 492 ms)

把这段错误提示翻译过来:

Gradle sync失败:不支持的方法:SyncIssue.getMultiLineMessage()。
您连接到的Gradle版本不支持该方法。
要解决这个问题,你可以改变/升级你连接到的Gradle的目标版本。
或者,您可以忽略这个异常,并从模型中读取其他信息。
参考IDE日志获取更多细节(帮助|显示日志)(11492 毫秒)

其实,我们可以仔细思考一下:该项目的作者是在2017年4月依靠这份同样的代码编译并成功运行APP,因此该项目配置的Gradle版本在2017年4月的Android Studio是可以完美运行的。同时博主也检查了当前项目配置的Gradle版本和安卓Gradle Plugin插件版本,分别是2.14.1-all2.2.0,它们两都是符合Google文档Android Gradle 插件版本说明的要求,但是需要注意的是安卓Gradle Plugin插件版本必须要跟当前Android Studio的版本不要差别太大,不然也是无法正常构建项目的,可以参考安卓官方文档《Android Gradle 插件版本说明》。

因此,正确的解决方案便是:升级该项目的Gradle版本和Gradle Plugin插件版本。

3 解决方案

3.1 确定当前Gradle和Gradle Plugin的最新版本号

虽然我们想把当前项目的Gradle和Gradle Plugin升级,问题是:那么多的Gradle版本和Gradle Plugin插件版本,我们具体要把当前的老项目升级到哪个版本呢?

最好的版本就是最新的版本,如果你不知道当前Android支持的最新版本,可以在Android Studio中新建一个Hello World安卓项目,该项目的Gradle版本和Gradle Plugin插件版本便是最新的。

例如,2020年12月,博主新建的Hello World安卓项目的/gradle/wrapper/gradle-wrapper.properties描述的Gradle版本为:6.5-binwrapper.properties的全部内容如下所示。:

#Fri Dec 18 15:53:49 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

build.gradle描述的Gradle Plugin版本为:4.1.1build.gradle的部分内容如下所示:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

确定了当前Gradle和Gradle Plugin的最新版本号后,我们在当前老项目中把Gradle和Gradle Plugin版本号进行修改。

3.2 添加google() Maven仓库并同步项目

升级好Gradle和Gradle Plugin后,我们再编译一下这个老项目,发现又报错了,截图如下:
在这里插入图片描述
其中报错日志为:

Could not find com.android.tools.build:gradle:4.1.1.
Searched in the following locations:
  - https://jcenter.bintray.com/com/android/tools/build/gradle/4.1.1/gradle-4.1.1.pom
If the artifact you are trying to retrieve can be found in the repository but without metadata in 'Maven POM' format, you need to adjust the 'metadataSources { ... }' of the repository declaration.
Required by:
    project :
Add google Maven repository and sync project
Open File

很显然是因为在build.gradle中没有google()这个Maven仓库,从而导致无法找到com.android.tools.build:gradle:4.1.1.的下载路径,因此正确的做法便是Add google Maven repository and sync project

这个问题主要是从指定的Maven仓库中找不到对应的库,可能的原因是没有访问Google的能力,可以参考文档《简书-AndroidStudio SSL peer shut down incorrectly 问题》来配置国内互联网可访问的Maven仓库。

当我们点击Add google Maven repository and sync project后,Android Studio便开始去下载Gradle Plugin等工具了,我们也可以看到build.gradle的仓库中也分别多了两行代码google()
在这里插入图片描述

3.3 成功编译运行APP

接着我们便可以成功编译运行APP。
在这里插入图片描述

本文参考文献:
[1]安卓官网-Android Gradle 插件版本说明
[2]Gradle sync failed: Unsupported method: SyncIssue.getMultiLineMessage(). (Android Studio)
[3]Android 实现一个简单的文件下载工具
[4]简书-AndroidStudio SSL peer shut down incorrectly 问题

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐李同学(李俊德-大连理工大学)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值