Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android build gradle太慢(依赖项解析)_Android_Android Studio_Gradle_Android Gradle Plugin_Build.gradle - Fatal编程技术网

Android build gradle太慢(依赖项解析)

Android build gradle太慢(依赖项解析),android,android-studio,gradle,android-gradle-plugin,build.gradle,Android,Android Studio,Gradle,Android Gradle Plugin,Build.gradle,我已经在安卓工作室(我目前的1.5版)工作了两年。一切正常,但当我下载金丝雀(2.1 p5)时,一切都出了问题。每次我想创建一个新项目、打开一个项目、同步或导入一个新的库或依赖项时,gradle花费的时间太长了-将近20分钟 我什么也没做,只是下载了金丝雀版本并运行了它 症状: 这件事发生在我上网的时候 第一个延迟发生在Gradle:Resolve dependencies:app:_debugCompile' 25分钟后,建筑几乎完成 注意: 当我断开互联网时,gradle会尽快完成 我试

我已经在安卓工作室(我目前的1.5版)工作了两年。一切正常,但当我下载金丝雀(2.1 p5)时,一切都出了问题。每次我想创建一个新项目、打开一个项目、同步或导入一个新的库或依赖项时,gradle花费的时间太长了-将近20分钟

我什么也没做,只是下载了金丝雀版本并运行了它

症状:

  • 这件事发生在我上网的时候
  • 第一个延迟发生在Gradle:Resolve dependencies:app:_debugCompile'
  • 25分钟后,建筑几乎完成
  • 注意: 当我断开互联网时,gradle会尽快完成


    我试图通过以下方法解决此问题

  • 我将gradle更改为脱机工作(它工作了,但我不希望这样,因为我想导入lib或依赖项)
  • 我在
    C:\Users\username\.gradle
    中创建了一个新文件(文件名为
    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.00GB
    • 操作系统:Windows 8.1 64位

    build.gradle(项目名称:appName)

    gradle.build(模块:应用程序)

    建筑后的渐变报告

    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渐变同步开始===> 晚上8:13:21渐变同步完成

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

    及 更改
    buildToolsVersion“23.0.3”

    并使用安卓studio 2.0稳定版。 请告诉我您需要更多详细信息,否则此解决方案对您无效。

    问题已解决! 经过2天的搜索,我得到了解决方案,因此我想与所有可能有相同问题的人分享。问题是
    gradle
    无法连接到某些国家/地区的中心存储库。当您创建新项目或导入时,您的中心存储库是
    jcenter()
    默认情况下,无论何时您想要构建、同步或添加新的外部依赖项,
    gradle
    将连接到,但无法连接,构建过程将等待连接到
    jcenter()
    ,因此此过程可能需要较长时间(+30分钟),即使您无法添加新的依赖项

    解决方案:

  • 确保您有最新的稳定版本(当前2.0.0)
  • 确保build.gradle中的gradle版本为2.0.0(
    classpath'com.android.tools.build:gradle:2.0.0'
  • 最后一步也是最重要的一步是将jcenter()更改为mavenCentral()
  • 因此,您可以轻松地添加新的依赖项和同步项目下3sec

    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
    }
    

    玩得开心

    我看到了另一个问题。该解决方案可能会对某人有所帮助


    最近,我在系统环境变量下设置了http_代理和https_代理。我必须删除它们,然后在studio设置中设置代理。

    除了上面的@Mehdi Jahed Manesh answer

    使用
    org.Gradle.jvmargs
    属性将分配给Gradle守护程序VM的内存量增加1 Gb,至少增加2 Gb,如下所示:

    org.gradle.jvmargs=-Xmx2048m
    

    在我的例子中,我通过安装新版本的JavaJDK解决了这个问题。
    安装新的JDK后,以打开方式打开,转到文件→项目结构→SDK位置,并将JDK位置更改为新版本Java JDK的位置。然后将要求您获得防火墙权限;检查Public并应用。让它解析gradle。

    初始生成完成后,请尝试从gradle设置启用脱机模式。这样,每个连续生成都不会开始解析依赖项,反之亦然ad从缓存中获取。如果添加新的依赖项,它将提示您禁用脱机模式并重新生成它。

    您可以优化gradle生成过程

    尝试将gradle置于脱机模式,强制在不连接外部存储库的情况下进行构建,如下所示:

    org.gradle.jvmargs=-Xmx2048m
    

    这对我帮助很大,因为在我的工作中,所有连接都在代理之后,这会增加构建时间

    如果这还不够,请花点时间测试Gradle>Experimental上的选项……有些选项可能会提高您的性能:

    注意:在新版Android studio中,
    视图->工具窗口->渐变->在线/离线切换按钮

    如前所述,将渐变置于离线模式对我来说很有效

  • 如果您使用的是android studio,请按照

  • 如果你像我一样使用命令行,你可以试试


  • 对于那些使用需要身份验证的存储库的用户,可以通过将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仅使用基本身份验证。这是可用方案的完整列表。

    请查看此报道。它可能与gradle无关,但它可以在不做太多更改的情况下加快构建速度:


    https://android.jlelse.eu/is-your-android-studio-always-slow-heres-how-to-speed-up-immediately-326ef9238024

    停止gradle下载并单击文件->“将项目与gradle文件同步”

    完全发布的Android Studio 2.0现在可用,因此无需使用金丝雀版本。这样,您还应该更新您的
    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
    }
    
    org.gradle.jvmargs=-Xmx2048m
    
    gradlew assembleReleaseStaging(your task name) --offline
    
    repositories {
        maven {
            credentials {
                username INTERNAL_REPO_USERNAME
                password INTERNAL_REPO_PASSWORD
            }
            // here comes the important part
            authentication {
                basic(BasicAuthentication)
            }
            url INTERNAL_REPO_URL
        }
    }