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。它具有即时 运行 功能。希望这有帮助。
我在 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。它具有即时 运行 功能。希望这有帮助。