AndroidStudio内网编译环境搭建

本文详细介绍了如何在Android Studio中开启Gradle离线模式,以及如何配置离线构建依赖,包括下载Google Maven依赖库的离线版本并设置Gradle脚本来使用这些组件。此外,还提供了在无网络环境下通过Maven下载依赖和手动处理无法找到的依赖包的方法,确保内网环境的自动化编译顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考如下博客:
根据该博客介绍和自己实践总结如下:
官方提供的方法:

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依赖库的离线版本
 在这个网页除了可以下载AndroidStudio,还可以下载  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()
}
...
}

也可以在build.gradle文件中设置,如下:
​
repositories {
      maven { url 'D://Users/user2/.m2/repository' }
}
​

指定离线库位置(上面的路径自己根据实际情况配置)。
在做自动化编译时,可以使用命令进行编译,如:
gradlew.bat clean --offline
gradlew.bat assembleRelease --offline
这样内网的编译环境就初步搭建完毕了。但是编译的时候依然会有很多依赖文件找不到。这就需要在外网根据编译的提示去下载相关依赖包了。下面介绍下如何下载依赖包:
外网下载依赖包:
依赖包一般是放在maven,google和jcenter仓库的,我们在 build.gradle 中配置google(),jcenter(),maven()其实就是让gradle编译时去这几个仓库下载依赖罢了,大部分依赖在maven仓库都能下载到,如果不行就去google或jcenter仓库下载看看。
有时一个依赖包还存在其他的依赖,如果全部去手动下载太过麻烦,可以在外网机器上安装一个maven工具,使用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本地仓

打开conf->setting.xml文件,新建本地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>
​

设置远程Maven库(这步可以不设置):
​
<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中的配置一样即可)
在D:\maven_repository\maven-dependcies文件夹下新建一个pom.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 命令,就能下载相对定的资源了。
下载的依赖包就在D:\maven_repository\maven-dependcies文件夹下按照 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
如果下载成功,那么拷贝到内网,放在google依赖包目录,按照 com/android/tools/build/jetifier/ jetifier-core/ 1.0.0-beta04层次放置pom和jar文件即可。
注意:有些依赖包只有pom,没有jar,所以,在下载时,pom下载成功了,但是jar没有下载到也没关系,直接把pom文件放在内网相应目录,重新编译再看报什么错。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值