我想使用没有互联网连接的android studio 6.0,为此,我设置了这个选项:
偏好设置> Gradle>离线工作
但我仍然收到消息:
Gradle项目同步失败。基本功能(例如编辑, 调试)将无法正常工作
当我尝试编译时,我得到错误:
运行应用程序时出错:Gradle项目同步失败。请修复你的项目 然后再试一次。
有人可以帮助我或者遇到同样的问题吗?
谢谢
答案 0 :(得分:0)
虽然我不知道确切的问题是什么,但我可以建议一种解决方法。
将build.gradle
改为开头:
buildscript {
repositories {
if ('allow' == System.properties['build.network_access']) {
mavenCentral()
} else {
maven {
url 'dependencies'
}
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.0-beta2'
}
}
apply plugin: 'com.android.application'
因此,当定义build.network_access=allow
gradle系统属性时,将使用在线mavenCentral()
存储库。否则,build将在dependencies
文件夹中使用本地脱机maven存储库。
现在的诀窍是生成本地离线maven存储库。为此,我使用此脚本(fetch_dependencies.py
):
#!/usr/bin/python
import sys
import os
import subprocess
import glob
import shutil
# Place this in build.gradle:
# repositories {
# if ('allow' == System.properties['build.network_access']) {
# mavenCentral()
# } else {
# maven { url 'dependencies' }
# }
# }
def main(argv):
project_dir = os.path.dirname(os.path.realpath(__file__))
repo_dir = os.path.join(project_dir, "dependencies")
temp_home = os.path.join(project_dir, ".gradle_home")
if not os.path.isdir(temp_home):
os.makedirs(temp_home)
subprocess.call(["gradle", "-g", temp_home, "-Dbuild.network_access=allow"])
cache_files = os.path.join(temp_home, "caches/modules-*/files-*")
for cache_dir in glob.glob(cache_files):
for cache_group_id in os.listdir(cache_dir):
cache_group_dir = os.path.join(cache_dir, cache_group_id)
repo_group_dir = os.path.join(repo_dir, cache_group_id.replace('.', '/'))
for cache_artifact_id in os.listdir(cache_group_dir):
cache_artifact_dir = os.path.join(cache_group_dir, cache_artifact_id)
repo_artifact_dir = os.path.join(repo_group_dir, cache_artifact_id)
for cache_version_id in os.listdir(cache_artifact_dir):
cache_version_dir = os.path.join(cache_artifact_dir, cache_version_id)
repo_version_dir = os.path.join(repo_artifact_dir, cache_version_id)
if not os.path.isdir(repo_version_dir):
os.makedirs(repo_version_dir)
cache_items = os.path.join(cache_version_dir, "*/*")
for cache_item in glob.glob(cache_items):
cache_item_name = os.path.basename(cache_item)
repo_item_path = os.path.join(repo_version_dir, cache_item_name)
print "%s:%s:%s (%s)" % (cache_group_id, cache_artifact_id, cache_version_id, cache_item_name)
shutil.copyfile(cache_item, repo_item_path)
shutil.rmtree(temp_home)
return 0
if __name__ == "__main__":
sys.exit(main(sys.argv))
它将以在线模式运行构建以下载所有依赖项。之后,它会将jar和poms复制到dependencies
文件夹中,在那里创建一个本地maven存储库。您甚至可以将此dependencies
文件夹推送到源代码管理中。
之后,您可以使用gradle --offline build
(或仅gradle build
)或使用Android Studio离线构建。