官方提供的方法:
1. AndroidStudio开启Gradle的离线模式:如果你的带宽小或者不能联网,开启Gradle离线模式防止它在构建的时候下载缺失的依赖库。当开启离线模式时,如果你的项目缺失了某些依赖库,Gradle会抛出一个构建失败的报错,而不是尝试下载它们。按照以下步骤开启离线模式:
File > Settings(Mac平台上为 Android Studio > Preferences)打开设置对话框。
Build, Execution, Deployment选项,并单击 Gradle。
Global Gradle settings下,选中 Offline work复选框。
Apply或者 OK让你的修改生效。
2. 配置离线构建依赖:
如果需要在没有网络的情况下构建项目,使用以下链接下载Google Maven依赖库的离线版本
Download Android Studio and SDK tools | Android Developers
Google Maven dependencies
下载解压Maven依赖离线组件。
当你下载完离线组件的时候,解压到以下目录。如果以下目录不存在,你需要手动去创建它们。
On Windows: %USER_HOME%/.android/manual-offline-m2/
On macOS and Linux: ~/.android/manual-offline-m2/
按照以下步骤更新离线组件(可以不删):
删除manual-offline-m2目录下的内容。
重新下载离线组件。
解压下载的离线组件到manual-offline-m2目录下。
为了让Android构建系统使用你下载的离线组件,你需要创建下面这样一个脚本。记住,你只需要创建一次这个脚本,后续更新离线组件不需要修改它。
在以下目录创建一个空的文本文件:
On Windows: %USER_HOME%/.gradle/init.d/offline.gradle
On macOS and Linux: ~/.gradle/init.d/offline.gradle
打开文本文件并输入以下内容:
def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
def repos = new ArrayList()
reposDir.eachDir {repos.add(it) }
repos.sort()
allprojects {
buildscript {
repositories {
for (repo in repos) {
maven {
name = "injected_offline${repo.name}"
url = repo.toURI().toURL()
}
}
}
}
repositories {
for (repo in repos) {
maven {
name = "injected_offline${repo.name}"
url = repo.toURI().toURL()
}
}
}
}
保存这个文件。
在内外编译工程时,移除build.gradle文件中所有在线库。
buildscript {
repositories {
// google()
// jcenter()
}
...
}
allprojects {
repositories {
// google()
// jcenter()
}
...
}
repositories {
maven { url 'D://Users/user2/.m2/repository' }
}
指定离线库位置(上面的路径自己根据实际情况配置)。
在做自动化编译时,可以使用命令进行编译,如:
gradlew.bat clean --offline
gradlew.bat assembleRelease --offline
这样内网的编译环境就初步搭建完毕了。但是编译的时候依然会有很多依赖文件找不到。这就需要在外网根据编译的提示去下载相关依赖包了。下面介绍下如何下载依赖包:
外网下载依赖包:
build.gradle
有时一个依赖包还存在其他的依赖,如果全部去手动下载太过麻烦,可以在外网机器上安装一个maven工具,使用maven工具去下载。
配置可参考: AndroidStudio使用本地Maven库 - 简书
maven工具配置方法如下:
1.下载Maven
首先我们要先下载Maven,下载好之后配置好环境变量,如下:
变量名:MAVEN_HOME
变量值:D:\apache-maven-3.5.2
变量名:Path
变量值:%MAVEN_HOME%\bin;
cmd中输入mvn –v显示Maven home: D:\apache-maven-3.5.2等数值表示配成功
2.配置Maven本地仓
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
--><localRepository>D:\maven_repository\maven-dependcies</localRepository>
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
| -->
<proxy>
<id>MyProxy</id>
<active>true</active>
<protocol>http</protocol>
<username>username</username>
<password>password</password>
<host>proxy</host>
<port>8080</port>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
</proxy>
<proxy>
<id>MyProxy2</id>
<active>true</active>
<protocol>https</protocol>
<username>username</username>
<password>password</password>
<host>proxy</host>
<port>8080</port>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
</proxy>
</proxies>
<mirrors>
<mirror>
<id> google</id>
<name>google</name>
<url> https://maven.google.com/</url>
<mirrorOf> central</mirrorOf>
</mirror>
</mirrors>
配置完成后。
在D:\maven_repository\maven-dependcies创建文件夹(这个可以调整,只要和maven工具conf->setting.xml中的配置一样即可)
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.project-group</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<dependencies>
<!-- 复制Maven声明到这里。 -->
<dependency>
<groupId>org.jetbrains.trove4j</groupId>
<artifactId>trove4j</artifactId>
<version>20160824</version>
</dependency>
</dependencies>
</project>
如果需要下载某个依赖包,在dependency下配置好, 然后在该目录下,执行 mvn clean compile 命令,就能下载相对定的资源了。
org/jetbrains/trove4j/ trove4j/ 20160824的目录保存的。将下载的依赖包拷贝到内网,和从google下载离线依赖包放一起即可。
有些依赖库在maven仓库下载不到怎么办?
那么可以尝试去其他两个库下载。例如:
<dependency>
<groupId>com.android.tools.build.jetifier</groupId>
<artifactId>
jetifier-core
</artifactId>
<version>1.0.0-beta04</version>
</dependency>
这个库在maven仓库就下载不到。这时我们就可以手动去google仓库或者jcenter仓库下载。几个仓库的下载链接头部如下:
mavne:
https://repo.maven.apache.org/maven2
jcenter:
https://jcenter.bintray.com/
google:需要梯子
https://dl.google.com/dl/android/maven2
以上面的库为例,我们可以构造如下的链接,在浏览器去试试看能不能下载pom文件和jar文件:
https://dl.google.com/dl/android/maven2/ com/android/tools/build/jetifier/ jetifier-core/ 1.0.0-beta04.pom
https://dl.google.com/dl/android/maven2/ com/android/tools/build/jetifier/ jetifier-core/ 1.0.0-beta04.jar
com/android/tools/build/jetifier/
jetifier-core/
1.0.0-beta04层次放置pom和jar文件即可。
注意:有些依赖包只有pom,没有jar,所以,在下载时,pom下载成功了,但是jar没有下载到也没关系,直接把pom文件放在内网相应目录,重新编译再看报什么错。