開発する時だけMultidexにしてみた。その時のメモ。 Lollipop以降のOSに限定すれば、Multidexにしてもビルド時間は長くならないようなので、その設定に落ち着いた。
状況 
- Debugビルドでだけ65kを超えた。
 - ReleaseビルドはProguardを使っていて、まだメソッド数に余裕があるので、Mutlidexにはしたくない。
 - ビルドが遅くなってしまうので、DebugビルドではProguardを使いたくない。
 - Lollipop以降はMultidexのビルドが速いらしい。
 
ということで、Debugビルドでだけ minSdkVersion 21 にしてMultidexを導入してみた。
Multidex導入 
ここを参考に導入。 https://developer.android.com/intl/ja/tools/building/multidex.html#mdex-gradle
build.gradle 
(1) multiDexEnabled true をbuildTypes.debugに追記
    buildTypes {
        debug {
            ...
            multiDexEnabled true
            ...
        }
        ...
    }
(2) flavorを追加。名前はdraftにしたけど何でもよい。
    productFlavors {
        draft {
            applicationId "${PACKAGE_NAME}.draft"
            minSdkVersion 21 //Optimizing Multidex Builds
        }
        ...
    }
(3) メモリを食うらしいので javaMaxHeapSizeを2GBに。
    dexOptions {
        javaMaxHeapSize "2048M"
    }
(4) multidexライブラリを読み込む。
dependencies {
    ...
    debugCompile 'com.android.support:multidex:1.0.1'}
    ...
}
まとめると次のような build.gradle になった。
android {
    compileSdkVersion 22
    buildToolsVersion 22.0.1
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 22
        ...
    }
    buildTypes {
        debug {
            ...
            multiDexEnabled true
            ...
        }
        release {
            ...
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ...
        }
    }
    productFlavors {
        draft {
            applicationId "${PACKAGE_NAME}.draft"
            minSdkVersion 21 //Optimizing Multidex Builds
        }
        develop {
            applicationId "${PACKAGE_NAME}.develop"
        }
        staging {
            applicationId "${PACKAGE_NAME}.staging"
        }
        production {
            applicationId PACKAGE_NAME
        }
    }
    dexOptions {
        javaMaxHeapSize "2048M"
    }
}
dependencies {
    ...
    debugCompile 'com.android.support:multidex:1.0.1'}
    ...
}
使い分けは、
- 開発時は draftDebug でビルドして Lollipop端末で確認
 - Lollipop以前のOSで確認する場合は、productionDebug、stagingDebug、developDebugのいづれかでビルド
 - リリース時は productionRelease でビルド
 
AndroidManifest.xml 
Applicationクラスを指定。
    <application
            android:name=".MainApplication"
            ... >
MainApplication.java 
Application.attachBaseContext() メソッドで android.support.multidex.MultiDex.install(this); を実行する必要があるが、ReleaseビルドではMultiDexクラスがないので Product Flavorで切り替える。
public class MainApplication extends Application {
    ....
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        if (BuildConfig.DEBUG) {
            MultiDexs.install(this);
        }
    }
    ....
}
app/src/debug/java/.../MultiDexs.java 
public class MultiDexs {
    public static void install(Application application) {
        MultiDex.install(application);
    }
}
app/src/release/java/.../MultiDexs.java 
public class MultiDexs {
    public static void install(Application application) {
        //do nothing
    }
}
ビルド時間 
| clean後の ビルド時間  | 2回目の ビルド時間  | 備考 | |
|---|---|---|---|
| draftDebug | 51秒 | 14秒 | Multidex  minSdkVersion 21  | 
| stagingDebug | 33秒 | 33秒 | Multidex  minSdkVersion 14  | 
| stagingDebug  ※Multidex導入前  | 55秒 | 17秒 | Not Multidex  minSdkVersion 14  | 
draftDebugとMultidex導入前のstaginDebugはPreDexが効くので2回目以降のビルドが速いらしい。
参考 
https://developer.android.com/intl/ja/tools/building/multidex.htmlhttp://qiita.com/KeithYokoma/items/579fb16bc6387e4f21d6