Android Studio 为什么我的构建需要这么长时间?

Why does my build takes so long is Android Studio?

我在 Android Studio 中构建需要很长时间,超过 2 分钟,有时 3 分钟。我尝试了 Whosebug 中介绍的一些方法来加快构建时间,但并没有解决我的问题。

我的 build.gradle 应用程序模块代码如下:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

// Adding The GIT SHA to Crashlytics crash reporting
def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.moymer"
        minSdkVersion 11
        targetSdkVersion 22
        multiDexEnabled true
        versionCode 5
        versionName "2.0.0"

        buildConfigField "String", "GIT_SHA", "\"${gitSha}\""
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled true
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.android.gms:play-services:7.5.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.github.nirhart:parallaxscroll:1.0'
    compile 'com.android.support:multidex:1.0.0'
    compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') {
        transitive = true;
    }
    compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
    compile 'com.android.support:recyclerview-v7:23+'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.android.support:percent:23.0.0'
    compile 'com.jakewharton.timber:timber:3.1.0'
    compile project(':androidffmpeglibrary')
}

我的 gradle.properties 文件如下:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

您有 11 个以上的依赖项和一个额外的插件。至少有一个 (androidffmpeglibrary) 似乎涉及 NDK。这不会很快,特别是取决于您的构建硬件。

如果你想要一个更快的构建,摆脱一些垃圾。比如已经有finer-grained Play Services SDK dependencies一年多了;只使用你需要的部分,而不是 "everything but the kitchen sink" play-services 神器。反过来,这可能允许您转储 multidex,因为您可能会回落到 64K DEX 方法参考限制以下。

Android 工具团队正在努力提高构建速度,这将出现在 Gradle 的 Android 插件的较新版本中。这一定在您的顶级 build.gradle 文件中,因为我看不到您将其包含在此处的位置。确保您使用的是最新版本,并随着新版本的发布不断更新。

正如 CommonsWare 所描述的,拥有大量依赖项确实会减慢整体构建速度。截至目前,您可以开始使用具有 instant run 功能的 Android Studio 2.0。

Instant 运行 大大缩短了构建时间,因为它只推送未进行的小更改。无论您在代码中做了什么更改,首先都会分为三类 - 热插拔、温插拔和冷插拔。负载越小,交换越热,构建时间越短。

像更改注释、静态字段等重大结构更改进入冷交换。清单文件中的更改也出现在冷交换中。您可以查看完整列表 here

好消息是,大多数小更改都属于热插拔,只要您按下 运行 按钮,这些更改就会迅速推送到 运行ning 应用程序中。相关activity重启,几秒后你就可以看到你的变化了。

稳定版AndroidStudio 2.0发布,可以下载from this link。它具有即时 运行 功能。希望这有帮助。