Android构buildgradle太慢(依赖分辨率)
我一直在使用Android Studio(我目前的版本1.5)2年。 一切正常,但是当我下载金丝雀(2.1 p5),一切都出错了。 每次我想创build一个新项目或者打开一个项目,或者同步或者导入一个新的lib或者依赖,gradle花费的时间太长了 – 大概20分钟 。
我没有做任何事情,我只是下载加纳利版本,并运行它。
症状:
- 当我连接到互联网时发生了
- 第一个延迟是在Gradle:Resolve依赖关系':app:_debugCompile'
- …
- 25分钟后几乎完成
注意 : 当我断开互联网时,gradle将尽快完成
我试图通过以下方式解决这个问题 :
- 我改变了gradle到离线工作(它的工作,但我不想这样,因为我想导入libs或依赖项)
-
我在
C:\Users\username\.gradle
创build了一个新文件(文件名是gradle.properties
),然后将这些行写入org.gradle.parallel=true org.gradle.daemon=true
-
我删除该版本,然后安装我的旧版本,工作正常,但问题仍然存在:(
-
禁用/启用防火墙
-
禁用/启用防病毒(Nod32)
-
重新安装Windows操作系统(8.1)
-
我已经下载了所有版本(1.0.0,…,1.5.1,2.0.0,2.1)
-
我使用了一个代理
系统信息 :
- 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分钟),即使你不能添加新的依赖关系。
解答:
- 确保你有最新的稳定版本(当前2.0.0)
- 确保你的gradle版本是build.gradle中的2.0.0(
classpath 'com.android.tools.build:gradle:2.0.0'
gradle:2.0.0classpath 'com.android.tools.build:gradle:2.0.0'
) - 最后一步,最重要的是把你的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它。
将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不适合你。