9

ここ数日、私はプロジェクトのビルド時間を改善しようとしてきましたが、うまくいきませんでした。クリーン ビルドのために 1 分 40 秒待たなければならないことは気にしませんが、単一の Java ファイルに 1 行を挿入すると、クリーン ビルドと同じビルド時間が得られます。私は何か間違ったことをしているに違いありませんが、私を正しい方向に向けるドキュメントやスタックオーバーフローの質問が見つかりません。トピックをよりよく理解している誰かが、私がこれらのひどいビルド時間を取得する理由を説明してくれることを期待して、ここで一元化する多くの情報を集めることができました.

ここに行きます:

  • 私のbuild.gradleファイルのこのオプションが私が求めているものであることを理解しています。

    android {
        dexOptions {
            incremental true
        }
    ...
    

    見事なインクリメンタル ビルド。ただし、私のプロジェクトでは、Lollipop より前の Android バージョンとのレトロ互換性のために multidex 機能を使用しているため、これは明らかに機能しません。

  • 救助にプロガード!Proguard を使用すると、実行可能ファイルを縮小し、未使用のメソッドをすべて削除できます。proguard minify でいくつかのエラーが発生しましたが、適切に設定して動作させることができました。すごい!Dex の生成には、ビルドごとに約 20 秒かかります。残念ながら、無料のものはなく、proguard gradle タスクの実行には約 2 分 50 秒かかります。私の最初のケースよりもさらに悪い。

この問題の解決策はありますか?

4

3 に答える 3

13

最後に解決策を見つけました。それはずっと公式ドキュメントにありました。何が言われているのかを理解するには、ビルドプロセスをより深く理解する必要がありました。

インクリメンタル ビルドと multidex は、実際には互換性のないオプションです。ただし、sdk バージョン 21 以降では、影響を受ける dex ファイルのみを再構築することにより、multidex apk の増分ビルドが可能です。詳細については、次を参照してください。

http://developer.android.com/tools/building/multidex.html

于 2015-09-01T19:32:31.357 に答える
3

Gradle で問題を解決する直接的な答えはありませんが、ビルドの速度を上げるのに役立つかもしれない提案があります。

最近、同じ問題に遭遇しました。ビルドに 4 分近くかかりました。さまざまなビルド オプションを試しましたが、目立った利益は得られませんでした。

いくつかの調査の後、Jrebel for Androidに出くわしました。ステロイドの「即走」みたいなものです。さまざまな種類の変更 (UI、メソッド、フィールドなど) をサポートし、アクティビティを再作成することなくリアルタイムでアプリケーションを更新します (したがって、状態を保存します)。通常、変更を適用するには 10 ~ 30 秒かかります。

このツールは無料ではありませんが、さまざまな価格オプションと試用アカウントが用意されているので、試すことができます. Android Studio または Eclipse の通常のプラグインとして機能し、インストールは非常に簡単です。

アップデート

今では無料版もあります: 投稿へのリンク

于 2016-09-16T07:13:45.423 に答える