官方提供的方法:



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文件放在内网相应目录,重新编译再看报什么错。