Gradle配置镜像的第三处位置gradle.properties, 替换plugins.gradle.org/m2

如果你配置过gradle镜像(特别是配置了但是不管用),可以直接看第二个标题。

由于网络安全问题,一些服务器无法在大陆直接访问,本人在5年前因为不会正确配置镜像,初学android失败,而晚了两三年才重新学习Android。准确熟练的配置镜像,能为每次创建/拓展项目时节约几十分钟时间。

不要配置网络代理,有时候配置了代理,镜像反而连不上了!建议直接配镜像。

许多博客记载过的2种情况

第一种情况,AndroidStudio创建完项目/打开项目后,左侧Project视图中的”Android”视图还没正确显示出来,就在Build页面显示timeout、connection reset或其他网络错误,这种情况是Gradle本身都没有被下载下来。

去项目路径找到gradlewrappergradle-wrapper.properties文件,比如我的gradle版本是7.4,那么会有一行:
distributionUrl=https://services.gradle.org/distributions/gradle-7.4-bin.zip

这里替换成:
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-7.4-bin.zip


第二种情况,左侧Project视图中的“Android”视图格式已经正常,但是尝试运行项目的时候才报错。
这种情况在项目级别(项目根目录)的build.gradle配置镜像,也就是网络上能轻易找到的配置方法:

allprojects {
    repositories {
        maven { url 'https:
        maven { url 'https:
        maven { url 'https:
        mavenLocal()
        
    }
}

还有

buildscript {
    repositories {
        maven { url 'https:
        maven { url 'https:
        maven { url 'https:
        mavenLocal()
        
    }
    dependencies {
        
    }
}

未在简中博客发现的一种情况

第三种情况,也是我从业一年多,才刚刚遇到的,并且没找到相关的简中博客。(找到的他们的解决方案都是手动下载对应的jar,然后放到某个目录。)

刚刚尝试新建buildSrc模块,build.gradle如下:

plugins {
    id 'java-library'
    id 'org.jetbrains.kotlin.jvm' version '1.8.10' // 原本默认没这个version, 这里自己指定了一个.
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

然后就跑不起来了。

Connection refused: no further information

image.png

根据Download Info,总是在尝试从plugins.gradle.org/m2这个网站下载kotlin-gradle-plugins
而从来都不从其他任何配置过的镜像网址下载,在项目中也找不到哪里配置了这个链接。

接下来只能看gradle源码了,为了简单,可以直接从逆向角度看。

按住ctrl点刚刚代码里的plugins,从而快速定位到gradle本身的目录:

image.png

在lib目录的gradle开头的jar,拖到jadx,搜索字符串plugins.gradle.org/m2

image.png

看到如下代码:

@Override 
public ArtifactRepository createGradlePluginPortal() {
    MavenArtifactRepository mavenRepository = createMavenRepository(new NamedMavenRepositoryDescriber("https://plugins.gradle.org/m2", null));
    mavenRepository.setUrl(System.getProperty("org.gradle.internal.plugins.portal.url.override", "https://plugins.gradle.org/m2"));
    mavenRepository.metadataSources((v0) -> {
        v0.mavenPom();
    });
    return mavenRepository;
}

可以看到这里https://plugins.gradle.org/m2org.gradle.internal.plugins.portal.url.override为空时的备选值。

那么只需要考虑如何配置,才能让System.getProperty读到。而这一步刚好能轻易找到简中资料,以systemProp.开头配置到项目根目录gradle.properties即可。


systemProp.org.gradle.internal.plugins.portal.url.override=https:

try again:

image.png

平均速度3.31M/s,75M的依赖很快就下载好了。

左侧还能看到个错误,

Could not resolve all files for configuration ‘:buildSrc:compileClasspath’.
Cannot resolve external dependency org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10 because no repositories are defined.

直接在这个build.gralde后面跟上:

repositories {
    maven { url 'https:
    maven { url 'https:
    maven { url 'https:
    mavenLocal()
}

就这样,终于能运行起来了。

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/22585,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?