【问题标题】:How to Increase Speed of Android Studio Application Builds?如何提高 Android Studio 应用程序构建的速度?
【发布时间】:2015-08-13 17:23:19
【问题描述】:

有什么方法可以显示我的构建过程中哪个过程花费的时间最多,然后尝试解决它?

我正在使用 Android Studio。目前我不会称我的项目很大,但我猜我需要的依赖项使它更大,并且构建仍然需要 40-60 秒。 (从移除 multi dex 前的 90 秒减少)

这是我 2015 年中 Macbook Pro 的规格:

  • 处理器:2.5 GHz Intel Core i7
  • 内存:16GB 1600 MHz DDR3

我必须删除部分依赖项才能在不启用多 dex 支持的情况下进行构建,这节省了我大约 20 秒,但是我想添加更多依赖项,因此我需要改进构建时间,以便我可以重新-启用多 dex 并实际使用我想要的依赖项。

我看过一些关于修改 Android Studio 以加快构建时间的帖子,但这些帖子似乎没有奏效,我宁愿看看能否解决问题。

这是我当前的依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

// MY INTERNAL LIBRARIES
    wearApp project(':wear')
    compile project(':ViewPagerIndicator')
    compile project(':connection-manager')
    compile project(':core-library')
    compile project(':activity-manager')
    compile project(':activity-recorder')

    compile 'com.google.android.gms:play-services-maps:7.5.0'
    compile 'com.google.android.gms:play-services-wearable:7.5.0'
    compile 'com.google.android.gms:play-services-location:7.5.0'

    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:support-annotations:22.2.1'

    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'joda-time:joda-time:2.7'
    compile 'com.androidplot:androidplot-core:0.6.1'

    compile project(':ParseLoginUI')

    /*Images*/
    compile 'com.squareup.picasso:picasso:2.3.3'
    compile 'com.makeramen:roundedimageview:2.1.0' // https://github.com/vinc3m1/RoundedImageView
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'io.reactivex:rxandroid:1.0.1'

//    apt 'com.google.dagger:dagger-compiler:2.0'

}

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    您可以做两件事来提高构建速度:

    1. 线下工作:

    1. 针对更大的 SDK 版本进行编译:

    这个很棘手。通常你的minSdkVersion 需要像 14 或 16 一样。这会减慢速度。如果您使用minSdkVerison = 22 编译速度时间会显着增加。 minSdkVersion可以在开发的时候增加,发布的时候减少。

    【讨论】:

    • 设置Offline work 很受欢迎。但是,如果您添加任何依赖项,您必须记住再次将其设置为关闭
    • 恐怕这些方法平均不会为我节省任何时间。也许离线工作,但可以忽略不计的 3/4 秒。 minSDK 技巧似乎没有任何效果
    • 您可以做的其他事情是尝试使用 DexOptions:dexOptions { incremental = false preDexLibraries = false } 这里有更多信息:tools.android.com/tech-docs/new-build-system/…
    【解决方案2】:

    我无意中解决了我在处理其他事情时遇到的问题。

    实现外部依赖 Retrolambda 将我的构建时间从 ~10 秒增加到 ~45/50 秒。从我的应用程序中删除它显着减少了它(实际上减少了大约 40 秒!)。

    我删除了retrolambda,因为我想开始测试我的应用程序并需要依赖关系RobolectricMockito。如果我同时使用retrolambda,我会遇到unsupported major.minor version 指向JDK 7 的异常。总而言之,我厌倦了围绕我的依赖项和构建设置只是为了使用retrolambda(Android Studio 在它的代码折叠中模仿它们)。

    【讨论】:

      【解决方案3】:

      对 gradle 使用离线模式可以缩短构建时间。

      Preferences > Build, Execution, Deployment > Gradle > Offline work
      

      缺点是,每当更新依赖项时,您都必须关闭离线模式。

      【讨论】:

      • 恐怕这行不通。我每次构建可能节省了大约 3/4 秒。
      【解决方案4】:

      您还可以用 Glide 和一个实用程序类替换两个库(毕加索和圆形图像视图),该类可以轻松完成圆形图像视图库的工作。

      查看这篇文章以获取通过滑行将图像转换为圆形图像的示例代码。 How to round an image with Glide library?

      我还建议您创建 Utility 目录并将此 CircleTransform 类放入其中。

      执行上述步骤将减少您使用的库数量,从而减少方法数项目的构建时间!

      【讨论】:

        猜你喜欢
        • 2018-01-19
        • 1970-01-01
        • 2021-07-26
        • 1970-01-01
        • 2020-12-05
        • 2010-12-01
        • 1970-01-01
        • 2018-03-20
        • 2021-08-09
        相关资源
        最近更新 更多