我已经使用Android Studio(我目前的1.5版)2年了。一切都很好,但是当我下载Canary(2.1 p5)时,一切都出错了。每次我想创建一个新项目或打开一个项目或同步或导入一个新的lib或依赖项时,gradle的构建时间太长 - 差不多20分钟。
我没有做任何事情,我刚刚下载了Canary版本并运行它。
症状:
注意:当我断开互联网连接时,gradle将尽快完成
我试图通过以下方式解决这个问题:
gradle.properties
创建了一个新文件(文件名是C:\Users\username\.gradle
)然后将这些行写入其中
org.gradle.parallel=true
org.gradle.daemon=true
系统信息:
的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'
}
建设后的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稳定版后
经过2天的搜索,我得到了解决方案,所以我想与所有可能遇到同样问题的人分享。问题是gradle
can没有连接到某些国家的中心存储库。当您创建新项目或导入时,默认情况下您的中心存储库是jcenter()
,每当您想要构建或同步或添加新的外部依赖项时,gradle
将连接到https://bintray.com/但它不能并且构建过程将等到连接到jcenter()
,所以这个过程可能需要很长时间(+30分钟),即使你不能添加新的依赖。
方案:
classpath 'com.android.tools.build:gradle:2.0.0'
)因此,您可以在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 Daemon VM的内存量增加1 Gb,最小值为2 Gb,如下所示:
org.gradle.jvmargs=-Xmx2048m
对于那些使用需要身份验证的存储库的用户,可以通过将gradle配置为仅使用单个身份验证方案来解决此问题:
repositories {
maven {
credentials {
username INTERNAL_REPO_USERNAME
password INTERNAL_REPO_PASSWORD
}
// here comes the important part
authentication {
basic(BasicAuthentication)
}
url INTERNAL_REPO_URL
}
}
事实证明,在对存储库进行身份验证时,gradle尝试使用所有类型的方案进行身份验证。上面的配置使gradle只使用基本身份验证。 Here是可用方案的完整列表。
在我的例子中,我通过安装新版本的Java JDK解决了这个问题。安装新JDK后,打开AS,转到文件→项目结构→SDK位置,并将JDK位置更改为新版Java JDK的位置。然后,您将被要求获得防火墙许可;检查公共并申请。让它解决问题。
就像Ismail Iqbal's answer说的那样,把gradle放在离线模式下对我有用。
gradlew assembleReleaseStaging(your task name) --offline
我见过另一个问题。解决方案可能对某人有所帮
最近我在系统环境变量下设置了http_proxy和https_proxy。我不得不删除它们,然后在工作室设置中设置代理。
将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稳定版。让我知道你想要更多细节,或者这个解决方案对你不起作用。