およそ140のプロジェクト/ライブラリを含むマルチプロジェクト設定でGradleを使用してビルドする場合、ビルド時間は1時間22分かかりました。そして、私は--parallel
を使用していました。そして、私たちのANTビルドは、並行ビルドなしで20分もかかりません。
これがまさに私がやったことです。
./gradlew clean
./gradlew build --parallel
私は少しテストを行いましたが、デクシングに最も時間がかかっているようです。 gradleプロセスが既にデクシングしたものを再利用する方法はありますか?ライブラリがすでに構築されている場合は、すでにデクスされたライブラリを再利用する必要があります。
オプション--no-rebuild
を見ましたが、そのオプションで実行すると、次のように表示されます
File '/path/to/project/build/libs/project.aar' specified for property 'bundle' does not exist.
ファイルのパスとプロジェクト名を一般的なものに置き換えました。
Gradle 1.9-rc-3の使用
追加情報(2014年1月15日):
preDexDebug
とpreDexRelease
は、各プロジェクトで非常に長い時間を要しました。他のどのタスクよりもはるかに長い。
進捗状況(2014年1月15日):
さて、とりあえず、preDexLibraries = false
をすべてのbuild.gradle
ファイルに入れました。ただし、そのエントリを配置できる集中化された場所を知りたいのですが、他のすべてのbuild.gradle
ファイルに影響します。
ただし、現在dexRelease
およびdexDebug
には長い時間がかかります。ビルドでdexDebug
またはdexRelease
のみを実行し、他の方法をスキップするように指示する方法はありますか?
進捗状況(2014年1月15日):
assembleDebug
の使用は成功しました。しかし、それはまだそれがすでにdextedライブラリを再利用していないようです。デクシングはまだ永遠にかかっているので。プロジェクトごとに約1分かかります。 gradleで既にdex化されたライブラリを再利用する方法はありますか?または、ビルドがまだ約1時間かかる別の理由がありますか?私たちのANTプロセスに15分もかかりません。
clean
を実行すると、既にプレデキシングされたライブラリが実際に削除されます。
推奨通り このスレッドで プレデキシングを無効にすることで、clean
ビルドの時間を節約できます(次のビルドで削除されるため):
Android {
dexOptions {
preDexLibraries = false
}
}
この投稿によると 。
現在、各プロジェクトは独自に依存関係をpre-dexします。つまり、同じライブラリに依存する2つのコンポーネントは、どちらもそのライブラリのclasses.jarでpre-dexを実行します。これを修正することを検討しています。
Gradlesコンパイラのパラメータを設定してみましたか?
リモートの依存関係がある場合、プロジェクトを実行するたびに、ネットワークを使用してリモートリソースで操作されます。 Gradlesコンパイラへの命令を定義して、彼がオフラインで作業するように指定する必要があります。
--offline
ここで、パフォーマンス向上のためのコンパイラ設定のスクリーンショットを残します。
または同じもの...
出典: http://gradle.org/docs/current/userguide/gradle_command_line.html