SDKバージョン21からmultidex環境でのビルドが最適化され、高速にビルドできるようになりました。これを有効にするためにはgradle.build上でminSdkVersionを21以上にする必要があります。
ただ、実際のプロダクトにおいて、minSdkVersionが21(Android 5.0以上)というのは現実的ではありません。そこで、開発環境とプロダクション環境で別々のproductFlavorを定義することで、開発時にはminSdkVersionを21に指定し、プロダクトとしてリリースする場合にはminSdkVersionを実際使われる値を使用することができます。これにより、開発時は高速なビルドで効率的な開発を行うことができます。
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'
}
自分の環境ではもともとdebugビルドで1分30秒くらいかかっていたのが、50秒くらいに短縮されました。
すでにflavorが設定されている場合
しかし、すでにflavorによって複数のソースツリーの管理などが行われている場合、単純にflavorによってminSdkVersionを分けることはできません。(ちなみにbuildTypeではminSdkVersionは指定できません)そのためには次のような方法を用います。