22

私のアプリケーションには不可欠なライブラリがたくさんあるため、multidex サポート ライブラリの使用を余儀なくされ、うまく機能します。しかし、問題が示されているのは、gradle ビルドの速度です。ビルドには平均 2 分かかります。開発とテストを行っているとき、これは非常に面倒です。

デバッグ ビルドを高速化する方法はありますか?

4

7 に答える 7

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'
}

製品フレーバーを追加したら、開発ビルドdevDebugに (デフォルト タスクの代わりに) タスクを使用できます。 - コマンドラインから: 実行 - Android Studio から: [ビルド バリアント]ウィンドウを開き、ビルド バリアントを選択します。debug
./gradlew installDevDebug
devDebug

もちろん、SDK >= 21 のデバイスに対して作業する必要があります。


フレーバーを使いたくない人のための解決策もあります。この gistで提案されているように、値を動的に計算しminSdkVersionます。

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

android {
    ...
    defaultConfig {
        minSdkVersion minSdk
        ...
    }
}

この例では、devMinSdkプロパティが定義されているかどうかを確認しており、true の場合はそれを使用しています。それ以外の場合、デフォルトは 14 です。

devMinSdkビルド スクリプトに値を渡すにはどうすればよいでしょうか。2 つのオプション:

コマンドラインを使用:

./gradlew installDebug -PdevMinSdk=21

Android Studio 設定の使用:

環境設定( Windows の設定) ->ビルド、実行、配置- >コンパイラ-> [コマンドライン オプション]テキスト ボックスに移動します。-PdevMinSdk=21

Android Studio コンパイラ オプション

于 2015-06-12T09:17:00.910 に答える
3

最近ビルド キャッシュは、Android Gradle プラグインに取り組んでいるチームによって導入されました。に追加することで有効にできandroid.enableBuildCache=trueますgradle.properties

詳細はこちら http://tools.android.com/tech-docs/build-cache

私にとっては、増分ビルド時間が最大 30 秒増加しました。

サポート ライブラリの一部として導入された従来の multidex ( com.android.support:multidex) では機能しないため、minSDK >= 21 の場合にのみ適しています。開発ビルドに対してのみ設定し、minSDK < 21 でリリース ビルドを実行できます。

また、マルチデックスを有効にしなくても機能します。

于 2016-10-12T10:40:22.707 に答える
1

Multidexing はより多くのメモリを使用します。Java の最大ヒープ サイズに近づくと、Java が実際の作業よりも GC に多くの時間を費やしていることがわかります。これにより、処理が大幅に遅くなる可能性があります。

multidex を使用する場合は、最大ヒープ サイズを増やすことを強くお勧めします。build.gradle ファイルの android クロージャーに以下を追加して、最大ヒープ サイズを 4 GB にします (必要に応じて小さくしてください)。

dexOptions {
    javaMaxHeapSize "4g"
}
于 2015-09-30T09:56:12.133 に答える
1

Android Studio 1.3 (現在は Preview 3 ) は、gradle のビルド時間を改善する新しいビルド システムを使用しています (実際には、10 ~ 30 倍速くなります)。

詳細については、Google I/O 2015 のライブ セッションをご覧ください

于 2015-06-11T09:32:57.923 に答える