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

时间:2015-10-08 22:11:54

标签: android android-studio gradle build

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

app模块的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

2 个答案:

答案 0 :(得分:5)

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

如果你想要更快的构建,摆脱一些垃圾。例如,What does "..." mean when next to a parameter in a go function declaration?超过一年;只使用你需要的部分,而不是“除厨房水槽之外的所有东西”play-services神器。反过来,这可能允许您转储multidex,因为您可能会回落到64K DEX方法参考限制之下。

Android Tools团队正致力于提高构建速度,该版本将在更新版本的Gradle Android插件中显示。这必须位于您的顶级build.gradle文件中,因为我在这里看不到您的位置。确保你使用最新版本,并在新版本发布时不断更新。

答案 1 :(得分:1)

正如CommonsWare所描述的那样,拥有大量依赖关系会降低整体构建速度。截至目前,您可以开始使用具有instant run功能的Android Studio 2.0。

即时运行会减少构建时间,因为它只会推动非小的变化。无论您在代码中做了哪些更改,都首先分为三类 - 热插拔,热插拔和冷插拔。负载越小,交换越温暖,构建时间越快。

更改注释,静态字段等重大结构变化会进入冷交换。清单文件中的更改也包含在冷交换中。您可以查看完整列表here

好消息是热交换中出现了大部分小变化,只要按下运行按钮,这些更改就会在正在运行的应用程序中快速推送。重新启动相关活动,您可以在几秒钟内看到更改。

Android Studio 2.0的稳定版本已发布,您可以下载from this link。它具有此即时运行功能。希望这会有所帮助。