加速multidex应用程序中的gradle构建

Tad*_*ust 22 performance android android-studio android-gradle-plugin android-multidex

我的应用程序有一堆必不可少的库,这就是为什么我被迫使用multidex支持库并且它运行良好.但问题显示的是在gradle buid速度.平均需要2分钟才能构建,当我开发和测试时,这非常烦人.

有没有办法加快我的调试版本?

Ale*_*pov 60

您可以通过指定最小SDK版本= 21 来加速开发构建.
官方文档包含有关该版本的整个部分.

示例(来自文档):

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
        }
    }
          ...
    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

添加产品风格后,您可以使用devDebug任务(而不是默认debug任务)进行开发构建:
- 从命令行:运行./gradlew installDevDebug
- 从Android Studio:打开Build Variants窗口并选择devDebug构建变体.

当然,您应该使用SDK> = 21的设备.


对于那些不想使用口味的人来说,也有一个解决方案.正如本要点所示,动态计算minSdkVersion值:

int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 14
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        minSdkVersion minSdk
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们检查是否devMinSdk定义了属性,如果是,则我们正在使用它.否则,我们默认为14.

我们如何传递devMinSdk价值来构建脚本?两种选择:

使用命令行:

./gradlew installDebug -PdevMinSdk=21
Run Code Online (Sandbox Code Playgroud)

使用Android Studio偏好设置:

转到(设置在Windows上) - > 构建,执行,部署 - > 编译器 - >把-PdevMinSdk=21命令行选项文本框.

Android Studio编译器选项

  • @HugoGresse在downvoting之前仔细阅读 - 你必须将最低SDK设置为21仅用于**开发**版本.在任何情况下,您都必须在您支持的所有SDK级别的大型设备套件上测试您的发布版本. (9认同)