我有一个命令行apk生成器,它使用相同的源代码编译了很多APK,因此这些应用程序具有相同的依赖关系。
在gradle文档中,我可以看到:
Gradle项目需要网络连接才能下载依赖项。
我知道可以将gradle配置为脱机工作,而不是下载为其他apks下载的相同依赖项。如何激活此离线模式?
答案 0 :(得分:41)
在Android Studio中,您可以通过激活此选项,使Gradle可以完全脱机构建应用程序:
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<div id="panel">
<div class='resiz'>a</div>
<div class='resiz'>b</div>
<div class='resiz'>c</div>
</div>
- &gt; Settings
- &gt; Build, Execution, Deployment
- &gt; Build tools
在Gradle命令行界面中,您可以使用Gradle
标志完成此操作。 Documentations对此标志的评价:
指定构建应在不访问网络资源的情况下运行。请参见第52.9.2节“覆盖缓存的命令行选项”。
答案 1 :(得分:37)
Gradle在避免重新加载工件方面做得很好,但您可以将--offline
传递给成绩,以防止在构建期间访问网络。如果它需要来自网络的东西,而不是尝试获取它,那么你的构建将会失败。
答案 2 :(得分:10)
答案 3 :(得分:1)
配置离线构建依赖项(gradle + maven)
重要说明:离线回购中不存在的库或android gradle插件版本,它将从远程下载。
如果您要在没有网络连接的情况下构建项目,请遵循 以下步骤将IDE配置为使用Android Gradle的脱机版本 插件和Google Maven依赖项。
如果您还没有这样做,请download the offline components 下载页面。
下载脱机组件后,将其内容解压缩到 以下目录,如果尚不存在,则可能需要创建该目录:
%USER_HOME%/.android/manual-offline-m2/
~/.android/manual-offline-m2/
要更新离线组件,请按照下列步骤操作:
manual-offline-m2/
目录中的内容。<code>manual-offline-m2/
目录。告诉Android构建系统使用您下载的离线组件 并解压缩后,您需要创建一个脚本,如下所述。请记住,你 只需要创建和保存一次此脚本,即使在离线更新后也是如此 组件。
使用以下路径和文件名创建一个空的文本文件:
在Windows上:%USER_HOME%/.gradle/init.d/offline.gradle
在macOS和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
中删除在线存储库
文件,如下所示。确认项目正确构建后
如果没有这些存储库,则可以将它们放回build.gradle
文件。
buildscript {
repositories {
// Hide these repositories to test your build against
// the offline components. You can include them again after
// you've confirmed that your project builds ‘offline’.
// google()
// jcenter()
}
...
}
allprojects {
repositories {
// google()
// jcenter()
}
...
}
注意:该脚本适用于您在工作站上打开的所有Gradle项目。
来源:https://developer.android.com/studio/intro/studio-config#offline
答案 4 :(得分:0)
我尝试使用这种方法在离线模式下进行构建。
A problem occurred configuring project ':MyApp'.
> Could not resolve all artifacts for configuration ':MyApp:classpath'.
> Could not resolve com.android.tools.build:gradle:4.1.1
Required by:
project :MyApp
> No cached version of com.android.tools.build:gradle:4.1.1 available for offline mode