我有一个多项目(大约10个模块),每次建造大约需要20-30秒。当我在Android Studio中按下Run键时,我每次都要等待重新构建应用程序,这非常缓慢。

是否有可能在Android Studio中自动化构建过程?或者你有什么建议可以加快这个过程吗?

在Eclipse中,由于自动构建,在模拟器上运行相同的项目大约需要3-5秒。

这是我的身材。Gradle文件(app模块):

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

当前回答

Android Studio 2.3后更新

所有的答案都很棒,我鼓励使用这些方法来提高构建速度。

在2016年9月android 2.2发布后,android发布了实验性的构建缓存功能,以加速gradle构建性能,现在正式从android Studio 2.3 Canary发布。(正式发布说明)

它引入了一个新的构建缓存功能,默认情况下是启用的,可以通过存储和重用在相同或不同Android项目的以前构建中创建的文件/目录来加快构建时间(包括完整构建,增量构建和即时运行)。

使用方法:

在gradle中添加以下线条。属性文件

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

清理缓存:

有一个新的Gradle任务叫做cleanBuildCache,你可以更容易地清理构建缓存。您可以在终端中输入以下命令来使用它: 。/ gradlew cleanBuildCache 或者你可以通过删除所有存储在该位置的文件来清除Android studio 2.2的缓存 C:\Users\ <用户名> \ .android \构建缓存

其他回答

如果使用谷歌播放服务,只依赖于你需要的库而不是整个blob可以使事情更快。

如果你只需要地图,使用:

compile 'com.google.android.gms:play-services-maps:6.5.+'

而不是:

compile 'com.google.android.gms:play-services:6.5.+'

后者将20k个方法(参见博客)引入类路径,这可能使总方法计数超过64k。

这将强制使用proguard或multidex,即使是调试版本。对于我的一个项目,我有以下的构建时间

Multidex构建(带支持库)~40秒 保护建造~20秒 当方法限制< 64k ~5sec时构建

如果在sdk 21+上开发,就有可能优化multidex构建,如android文档中所述

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

我最近买了一个新的固态硬盘,从Windows换成了Linux。我的构建时间现在快了一个数量级,不再烦人了。

虽然它没有直接回答为什么它比eclipse慢的问题,但它表明该进程受磁盘限制,升级到SSD可能是一个(有点昂贵的)解决方案。我猜会有人在谷歌上搜索这个问题,最后来到这里,他们可能会欣赏我的经验。

一个微不足道的更改(到一个资源xml)仍然需要10分钟。 正如@rivare在他的回答中所说,命令行构建要快得多(缩短到15秒)。 下面是一些步骤,至少可以从Windows命令行快速完成一个简单的构建。

进入你的项目根目录(gradlew.bat所在的地方): android cd c: \ \ MaskActivity 执行构建: gradlew assembleDebug 直接从手机上卸载apk(拖拽即可卸载)。 构建完成后,使用Windows杀死BIG java进程 任务管理器。

或者如果你的Windows机器上有unix工具:

ps

“pid”的值如下所示:

kill -9 <pid>

现在安装apk: adb -d install C:\Android\MaskActivity\app\build\outputs\apk\app-debug.apk

我受够了本地机器上缓慢的android构建。我解决这个问题的方法是在AWS上启动一台高端机器,将我本地的代码重新同步到机器上,然后在那里编译。

我看到了性能的立即提升,并且我的本地系统不再占用CPU。看看我创建的这个工具,帮助开发人员加快他们的终端https://stormyapp.com

如果你从命令行使用gradle,你可以让这个过程更快。IDE开发人员有很多优化工作要做。但这只是一个早期版本。

欲了解更多信息,请阅读与一些开发人员在g+上的讨论。