Android构buildgradle太慢(依赖分辨率)

我一直在使用Android Studio(我目前的版本1.5)2年。 一切正常,但是当我下载金丝雀(2.1 p5),一切都出错了。 每次我想创build一个新项目或者打开一个项目,或者同步或者导入一个新的lib或者依赖,gradle花费的时间太长了 – 大概20分钟

我没有做任何事情,我只是下载加纳利版本,并运行它。

症状:

  1. 当我连接到互联网时发生了
  2. 第一个延迟是在Gradle:Resolve依赖关系':app:_debugCompile'
  3. 25分钟后几乎完成

注意当我断开互联网时,gradle将尽快完成


我试图通过以下方式解决这个问题

  1. 我改变了gradle到离线工作(它的工作,但我不想这样,因为我想导入libs或依赖项)
  2. 我在C:\Users\username\.gradle创build了一个新文件(文件名是gradle.properties ),然后将这些行写入

     org.gradle.parallel=true org.gradle.daemon=true 
  3. 我删除该版本,然后安装我的旧版本,工作正常,但问题仍然存在:(

  4. 禁用/启用防火墙

  5. 禁用/启用防病毒(Nod32)

  6. 重新安装Windows操作系统(8.1)

  7. 我已经下载了所有版本(1.0.0,…,1.5.1,2.0.0,2.1)

  8. 我使用了一个代理


系统信息

  • CPU:Intel Core i5
  • 公羊:6.00 GB
  • 操作系统:Windows 8.1 64位

的build.gradle(项目:应用程序名称)

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

gradle.build(模块:APP)

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.test.myapplication" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:23.3.0' } 

build立后的Gradle报告

 Dependencies Duration All dependencies 14m3.43s :app:_releaseCompile 3m30.96s :app:_debugCompile 3m30.73s :app:_debugApk 3m30.69s :app:_releaseApk 3m30.62s :classpath 0.428s :app:_debugAndroidTestCompile 0.001s :app:_debugAndroidTestApk 0s :app:_debugUnitTestApk 0s :app:_debugUnitTestCompile 0s :app:_releaseUnitTestApk 0s :app:_releaseUnitTestCompile 0s :app:releaseWearApp 0s :app:wearApp 0s 

安装完android studio 2.0稳定版后

  • 7:23:47 PM开始Gradle同步====> 8:13:21 PM Gradle同步完成

问题已经解决了 !

经过两天的search,我得到了解决scheme,所以我想与所有可能有同样问题的人分享。 问题是gradle无法连接到某个国家的中心存储库。 当你创build一个新的项目或者导入时,你的中心仓库默认是jcenter() ,当你想要构build或者同步或者添加新的外部依赖时, gradle会连接到https://bintray.com/,但是不能并且build立过程要等到连接到;jcenter() ,所以这个过程可能需要很长时间(+30分钟),即使你不能添加新的依赖关系。

解答:

  1. 确保你有最新的稳定版本(当前2.0.0)
  2. 确保你的gradle版本是build.gradle中的2.0.0( classpath 'com.android.tools.build:gradle:2.0.0' gradle:2.0.0 classpath 'com.android.tools.build:gradle:2.0.0'
  3. 最后一步,最重要的是把你的jcenter() 改成mavenCentral()

所以你可以很容易地添加新的依赖和同步项目下3秒!

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir } 

玩的开心

上面还有@Mehdi Jahed Manesh的答案。

使用org.gradle.jvmargs属性,将分配给Gradle守护程序虚拟机的内存量增加1 Gb,最小为2 Gb

org.gradle.jvmargs = -Xmx2048m

我看到了另一个问题。 解决scheme可能有助于某人

最近我在系统环境variables下设置了http_proxy和https_proxy。 我必须删除它们,然后在工作室设置中设置代理。

就我而言,我通过安装Java JDK的新版本来解决这个问题。 安装新的JDK后,打开AS,转到文件→项目结构→SDK位置,并将JDK位置更改为新版本的Java JDK。 然后你会被要求获得防火墙许可; 检查公开并申请。 让它解决gradle。

初始构build完成后,尝试从Gradle设置启用离线模式。 因此,每个连续的构build都不会开始解决依赖关系,而是从caching中获取。 如果添加新的依赖项,它将提示您禁用离线模式并重build它。 Gradle预览的图像

classpath 'com.android.tools.build:gradle:1.5.0'更改为

 classpath 'com.android.tools.build:gradle:2.0.0' 

并将buildToolsVersion "23.0.3"更改为

 buildToolsVersion "23.0.2" 

并使用android studio 2.0稳定版本。 让我知道你想要更多的细节,或者这个解决scheme不适合你。