Android导入其它项目慢,Gradel下载失败,另辟蹊径:使用离线gradle加载,附镜像方式
最近在开发中需要测试以前写的小项目。结果忘了换本地的gradle,提示下载失败。换了现在用的gradle,项目能跑了。虽然网上有很多很多教程了,但对我的情况也不是都适用。所以自己记录一下。本人水平有限,有不对的地方请帮我指正,万分感谢。
如果您很着急,请直接看目录挑选重要部分看。
前言
离线导入的方式(没有使用本地gradle或不修改默认仓库位置的前提下)适合本地项目和修改别人的项目。不太推荐含有git并且要推给别人使用,这个推荐用镜像。至于为什么,因为别人和您的路径不同。当您看完本篇文章就知晓了。同时也希望您看完了再开始配置,根据需要选择合适的方式。当您看完以后应该知晓了下载慢或失败的原因,也可举一反三,在充分备份的情况下自行配置。
直接打开的效果
如果打开的项目与自己本地仓库里的gradle版本不一致,哪怕是个小版本号不同都会自动下载该项目的gradle。

以前是可以直接下载的,只是很慢。随着版本更新,就无法再连接到官方仓库下载了。这里显示连接超时了,有时候会显示下载失败。

离线导入
要离线导入,我们要知道gradle在我们项目中的作用。它就是导入依赖的,和Maven类似吧,这是我的理解。那么是导入依赖的工具,必然会有一个存储依赖的本地仓库,不然的话每次下载到项目里,然后每开一个项目就下载一次?这种蠢事可能也只有我以前还觉得是合理的哈哈。
本地仓库
当你下载Androidstudio,配置好了以后,新建一个项目,就必然会有一个当时比较新的gradle下载到了你的本地仓库。而在安装的时候也没见到哪儿设置啊,也没说在哪啊。
这时候你打开你的资源管理器,打开C盘,找到你自己用的账户,进去点开.gradle文件,这就是默认的本地仓库了。

到这里还是没有看到自己用的gradle在哪。那点击wrapper,里面有一个dists文件夹,再点进去就能看到了带gradle版本的gradle-x.xx-bin(也有可能这个是all)的文件夹。如果好奇,可以再点进去看看,这里不多写了。
没错,本地的仓库是在C盘,如果您不在意,可以不用改,甚至不用看完本篇文章。因为只需要将离线的gradle的压缩包放到dists下面就行了。
更换本地仓库位置(非必要)
本来我的存储空间就很紧张了,更何况是C盘空间呢,果断选择换仓库的位置。
首先在你觉得合理的位置下面新建一个文件夹(前提是整个路径不要有中文,磁盘名字不用担心,这个只看盘符的),其实名字不一定要写成.gradle一样,这是我的仓库新路径D:\Gradle\gradle-repository。然后将原来的仓库内容直接粘贴复制过去,切记不要删除了,否则新仓库配置失败,旧仓库也不能用了就得不偿失了。
接下来就是修改环境变量了。新加一个环境变量,名字为GRADLE_USER_HOME,值为新仓库的路径。有了这个环境变量Android studio才会用新的仓库。

这时候我们可以重新打开Androidstudio,点击File->settings->Build,Exxxx,Dxxxx->Build Tools->Gradle

GradleUserHome位置应该就是现在新仓库的位置了。
使用离线gradle
到现在我们开始正式配置离线gradle内容了。
首先,我们要去下载项目需要使用的gradle。当然,其实完全可以使用已经有的gradle,但毕竟我要记录的是离线加载嘛,所以我将这个方法写在后面。
首先把视图放在project下,侧边栏有个Project,这一栏的最上边一般是显示的Android视图级别,但是在项目进行gradle下载完成或失败之前会一直显示加载,看不到任何内容。所以直接换到project级别下,打开gradle文件夹,下面有一个配置文件gradle-wrapper.properties。里面的内容就是gradle下载的一些信息。
distributionBase:指向仓库地址
distributionPath:相对于distributionBase的解压后的Gradle的路径
zipStoreBase:指向仓库地址,但是这里放的是压缩包文件
zipStorePath:同distributionPath,这也是放的是压缩包文件
distributionUrl:Gradle发行版压缩包的下载地址,如果用离线,改成我们的gradle地址

这就是项目用的gradle版本,我这个项目以前用的是7.0.2。如果我不改的话,把版本换成现在使用的版本,-bin,也有可能现在用的是-all(很少),如果不一致也要一起改。改完以后还要改gradlePlug版本,这个相当于是插件,和gradle是两个东西,前者是Google的,后者是gradle公司的。这里只是提一嘴。现在主要还是说离线的。
根据版本去找离线包,以前阿里云好像可以下载,现在不知道。这里给一个镜像网址:gradle镜像:https://mirrors.cloud.tencent.com/gradle/
里面有很多版本,我们主要找后缀 版本号-bin.zip的文件。这里我们可以看到7.0有很多版本和不同的命名。
这里浅浅的说一下吧:-rc是属于终版前的一个版本,不是最终版,但是如果-rc版本没有什么大问题,就会成为终版发布上线。软件的话一般还有一个-Bate版本,表示公测版本。-bin是这个已编译文件,能够直接运用在项目中,不需要我们再编译;-all不仅有-bin的所用东西,还有源码文档;-src是源码,不能够直接运行在项目中。当然这个是gradle的,不过大多公司对软件的命名也大差不差的。

下载以后得到一个压缩包。至于放在哪,这个不用直接放在仓库,之前我的仓库还有一个父目录,Gradle的文件夹,放在它的下面。
然后我们回到Androidstudio,打开gradle-wrapper.properties配置文件,修改distributionUrl的值,让他不去网络上的仓库去下载 (这里其实我们已经知道了为什么导入其它项目真正慢是因为无法通过这个地址去下载到我们需要的gradle,那么是不是改为镜像下载地址是不是会好很多呢。答案是肯定的,这里主要是离线的方法,后面会介绍) ,而是通过我们指定的位置去下载解压。我的建议是不要直接去删除,而是屏蔽掉,防止出问题以后没有办法复原。下面是我的配置。
distributionBase=GRADLE_USER_HOME
distributionUrl=file:///D:/Gradle/gradle-7.0.2-bin.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME


检查无误后,点击同步。

接着它会去下载其它依赖。到这里基本上就成了。当然,可能会出现一个叫你的主机中的软件中止了一个已建立的连接。 错误,这个一般是端口被占用了,如果是笔记本看下是不是用电脑开了移动热点,关掉就好了,如果是其它程序占用(一般不是),关闭就好了,如果是adb占用,暂时退出就好了。

依赖镜像(非必要)
等待依赖下载完成,这个项目就能跑了。如果不想再折腾的就不用看下面的了。
不过有些依赖下载的挺慢的,甚至会失败。对于单个项目,我们可以单独配置一下。如果要全局配置,就需要项目用到自己的本地Gradle环境,这个在下面一节会说。
点开build.gradle。这个是整个项目的。还有一个是在app下面的。如果在Android视图级别下,两个会在同一列表,但是后面会有一个冒号,:app表示app下的,:项目名表示整个项目的。我们要更改的就是整个项目下面的。

添加镜像地址
mavenLocal() //配置先从本地仓库寻找jar包,优先寻找上一个配置,找到不执行下面的配置
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
mavenCentral()
为什么多了一个allprojects呢,而且和上面的有相同的结构。buildscript 块只适用于该 Gradle 构建文件中,而 allprojects 块适用于所有项目和模块。可以根据需要添加

这里就配置好了依赖镜像,它会有限去找我们本地的jar包,没有再去镜像找,依次往下。当然jar包也是可以离线导入的,这个比较简单,这里就不介绍了。
附上一个阿里云镜像配置方式
既然依赖可以用镜像,阿里云,腾讯云还有其它镜像网站也有gradle的镜像,打开项目会去找
配置整个Gradle环境并应用在项目中(非必要)
解压我们之前下载的gradle离线包,但是压缩包不要删除!!这时候我们还需要去配置一下环境变量。新建一个名字GRADLE_HOME的变量,值为解压的目录。

然后点开path,如果条目多的话可以直接双击打开的。

点击新建,然后输入%GRADLE_HOME%\bin,点击确定,确定,确定。

这时候我们用命令窗口(WIN+R输入cmd),输入gradle -v。出现正确的版本,和信息表示本地gradle配置成功了。注意这是gradle在本地使用,可以通过命令使用了,而不是说在Androidstudio中能用了。

这时候我们打开Android studio。点击File->settings->Build,Exxxx,Dxxxx->Build Tools->Gradle->GradleProjects。修改UseGradlefrom,改为Specifiledlocation,让我们自己指定gradle,选择我们已经安装的gradle。然后点击apply或者ok应用。
第一个选项很容易理解,就是从配置文件中选择。


为了演示这里将所有配置还原了,然后删掉了本地仓库的gradle

可以看到没有经过配置文件去加载,而是直接运行了。

使用已有的gradle和镜像导入
镜像导入
这个比较简单所以放在前面,其主要通过修改distributionUrl来实现。
在前面下载离线gradle的时候用了一个镜像地址,这是腾讯的,将地址改为https://mirrors.cloud.tencent.com/gradle/gradle-x.x.x-x.zip。
常用的是阿里云的镜像:https://mirrors.aliyun.com/gradle/gradle-x.x.x-x.zip
当然无论是阿里云的镜像地址,还是腾讯的,都要保证镜像仓库下有你要的文件(一般都有)。
使用已有的gradle
当我们不想要去下载新的gradle,并且在不影响项目的情况下,我们可以直接用已经有的版本。
首先我们还是要更改distributionUrl的内容,但这次不用修改前面了,网络地址了,而是修改gradle版本号。比如我现有的gradle是8.0-bin,而这个项目用的是7.0.2-bin,那么我直接修改版本号就行了。因为这个版本我们是有的,所以他不会进行下载的。

到这里看起来好像一切ok。但我们点击File->Project Structure->Project。可以看到,下面GradleVersion是gradle版本,而上面那个gradlePluginVersion则是插件的版本。他们是有对应关系的。当你更换了gradle版本以后,也应该更改插件的版本。

以我为例,我现在更换了8.0,那么插件版本该是多少呢,这个就要查询官方给的资料了。Android Gradle 插件版本说明 网址:https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn#updating-gradle

可以看到我需要更新到至少8.0的插件版本。官方的资料里面还有一个关于Androistudio版本的限制。这个我并未验证,使用无法进行说明。

当一切完成以后,这个项目按道理说也能跑了。因为Android版本及其对应API级别不同而带来的错误这里就不说了,这个解决很简单的,网上资料也多。
结尾
我也十分犹豫的写下这篇笔记。一来是网上已经有很多大神出了教程,我真的有必要再写一篇吗。二来是自己不过半只脚踏入门的半吊子,真的有资格去写这些吗,说不定还会误导他人。于是在写下第一篇笔记后,就不敢再怎么写了。但是近期问题太多了,有时候一回想,这不就是之前遇到过的吗,虽然记得,但是完全忘了怎么操作(经验不够),还要重新开始搜索资料。效率是比刚开始遇到的时候快,但加在一起还是浪费了很多时间。为了防止踩过的坑再踩一次,我还是鼓起勇气写下了这篇笔记并分享给大家。如果这篇笔记对你有帮助,那就太好了,最后感谢您的观看。
相关文章:
Android导入其它项目慢,Gradel下载失败,另辟蹊径:使用离线gradle加载,附镜像方式
最近在开发中需要测试以前写的小项目。结果忘了换本地的gradle,提示下载失败。换了现在用的gradle,项目能跑了。虽然网上有很多很多教程了,但对我的情况也不是都适用。所以自己记录一下。本人水平有限,有不对的地方请帮我指正&…...
神经语言程式(NLP)项目的15 个开源训练数据集
一个聊天机器人需要大量的训练数据,以便在无需人工干预的情况下快速解决用户的询问。然而,聊天机器人开发的主要瓶颈是获取现实的、面向任务的对话数据来训练这些基于机器学习的系统。 我们整理了训练聊天机器人所需的对话数据集,包括问答数据、客户支持数据、对话数据和多…...
H5 红色文字抖动网址发布页/引导页源码
H5 红色文字抖动网址发布页/引导页源码 源码介绍:一款红色文字抖动网页源码,可用于引导页或网址发布页。 下载地址: https://www.changyouzuhao.cn/10470.html...
MacOS - 菜单栏上显示『音量』
教程步骤 点击打开系统偏好『设置』,并找到『控制中心』 在『控制中心模块』找到『声音』,选择『始终在菜单栏显示』...
深入理解常见的设计模式
目录 引言 1. 单例模式(Singleton Pattern) 应用场景: 示例代码: . 工厂模式(Factory Pattern) 应用场景: 示例代码: 3. 观察者模式(Observer Pattern)…...
服务器解析漏洞及任意文件下载
1.服务器文件解析漏洞 文件解析漏洞,是指Web容器(Apache、nginx、iis等)在解析文件时出现了漏洞,以其他格式执行出脚本格式的效果。从而,黑客可以利用该漏洞实现非法文件的解析。 (1) Apache linux系统中的apache的php配置文件在/etc/apac…...
ES6扩展运算符——三个点(...)用法详解
目录 1 含义 2 替代数组的 apply 方法 3 扩展运算符的应用 ( 1 )合并数组 ( 2 )与解构赋值结合 ( 3 )函数的返回值 ( 4 )字符串 ( 5 )实现了 Iter…...
限制资源使用
限制资源使用 您需要显示对服务器资源的访问来保护Web应用程序和应用程序数据不受未授权用户的访问。在Java EE Web应用程序中,您可以通过在应用服务器中创建用户和用户组来保护资源免受未经授权的访问。您可以为应用程序定义角色并在部署过程中将角色分配给用户。 1. 创建授权…...
结合Next项目实际认识webpack.splitChunks
本文的目的在于简单的介绍webpack的优化功能配置:splitChunks。 webpack5出于“开箱即用”的目的,将大部分曾经要使用插件的功能集成到了config配置中,因此用户只需要了解如何配置,即可达到优化目的,其中最常使用接触的…...
【Tauri】(2):使用Tauri应用开发,使用开源的Chatgpt-web应用做前端,使用rust 的candle做后端,本地运行小模型桌面应用
视频演示地址 https://www.bilibili.com/video/BV17j421X7Zc/ 【Tauri】(2):使用Tauri应用开发,使用开源的Chatgpt-web应用做前端,使用rust 的candle做后端,本地运行小模型桌面应用 1,做一个免…...
C#where T :通用的泛型约束(generic constraint)语法
在C#中,where T :是一种通用的泛型约束(generic constraint)语法,用于限制泛型类型参数T的特定条件。通过使用泛型约束,我们可以对泛型类型参数进行更具体的限制,以确保在使用泛型时满足特定的要求。 wher…...
vue使用Mars3d弹框嵌套video视频/实时视频(m3u8)使用hls.js
下载hls.js http://mars3d.cn/lib/video/hls/hls.js下载 1.首先绘制地图我使用的天地图 async infoMars3d() {const that this;var mapOptions {scene: {center: {lat: 30.435192,lng: 103.936535,alt: 200000,heading: 359,pitch: -79},highDynamicRange: false},// 方式1&a…...
Python爬虫之Ajax数据爬取基本原理
前言 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档,而浏览器中…...
osg操控器和键盘切换操控器学习
osg提供了很多操控器,在src\osgGA目录下,cpp文件名含有Manipulator的都是操控器,每个这样的cpp表示一种类型的操控器。 名字带 Manipulator 的类都是操控器; 其中KeySwitchMatrixManipulator.cpp文件实现了键盘切换操控器; 操控器是指:操控相机运动,从而实现场景视图…...
LeetCode1143. Longest Common Subsequence——动态规划
文章目录 一、题目二、题解 一、题目 Given two strings text1 and text2, return the length of their longest common subsequence. If there is no common subsequence, return 0. A subsequence of a string is a new string generated from the original string with so…...
利用Windows10漏洞破解密码(保姆级教学)
前言: 本篇博客只是技术分享并非非法传播知识,实验内容均是在虚拟机中进行,并非真实环境 正文: 一.windows10电脑密码破解 1)开启windows10虚拟机,停留在这个页面 2)按5次Shift键,出现这个粘滞键,如果没有出现的,则说明漏洞已经修复 3)重新启动,在这个页面的时候…...
apk反编译修改教程系列---简单修改apk默认横竖屏显示 手机端与电脑端同步演示【十一】
往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…...
2301: 不定方程解的个数
题目描述 输出不定方程解的个数。在数学中,不定方程是数论中的一个重要课题,在各种比赛中也常常出现. 对于不定方程,有时我们往往只求非负整数解,现有方程axbyc0,其中x、y为未知量且不超过10000,当给定a、…...
vue3学习——封装菜单栏
/Layout/Sidebar/index.vue <script setup lang"ts"> import Sidebar from ./Sidebar.vue // 在下面的代码里 import { useRoute } from vue-router import useUserStore from /store/modules/user.ts // state中存放菜单数据 import useLayoutSetting from /…...
深度学习的进展及其在各领域的应用
深度学习,作为人工智能的核心分支,近年来在全球范围内引起了广泛的关注和研究。它通过模拟人脑的学习机制,构建复杂的神经网络结构,从大量数据中学习并提取有用的特征表示,进而解决各种复杂的模式识别问题。 一、深度…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
