0

私は、約 5,000 行のコードと少数のリソースで構成される小さな Android アプリケーション プロジェクトに取り組んでいます。また、lib/ フォルダーにはいくつかのライブラリ依存関係があります。問題は、コンパイル時間が非常に遅いことです。次のことを実行するとします。

ant clean debug

これには約 28 秒かかります。後続の実行:

ant debug

コンパイルの間にソースに変更を加えていないにもかかわらず、9 秒かかります。

'-dex' ターゲット中に速度低下の大部分が発生するようです。

Android ビルドの速度パフォーマンスを改善するにはどうすればよいですか?

編集した「ant clean debug」出力については、次のリンクを参照してください: http://pastebin.com/XY08mr5G

使用しています: Apache Ant(TM) バージョン 1.8.4、Android Debug Bridge バージョン 1.0.31、Android SDK Tools 22.01、Android SDK Platform-tools 17、Android SDK Build-tools 17

ありがとう。

4

2 に答える 2

0

後から考えると、私の中心的な問題は、前回のビルド以降に変更されたソースを Ant が正しく追跡することを信頼していないことです。失敗したビルドで何度もやけどを負ったという理由だけで、コンパイルするたびに「ant clean debug」を実行していることに気付くことがよくあります。

毎回すべての依存関係ライブラリを実際に再構築することなく、ソースの新しいコンパイルを実行するターゲットがあれば!

これが私の問題に対する提案された解決策です。この Ant ターゲットをプロジェクトの build.xml に追加します。

<target name="cl">
    <delete file="bin/classes.dex" />
    <delete file="bin/classes.dex.d" />
    <delete dir="bin/classes" />
</target>

現在、「ant cl debug」の実行にかかる時間は大幅に短縮され、5 秒で記録されます。Java ソース ファイルはすべて再コンパイルされますが、ライブラリは毎回再 dex されません。(「クリーン」ターゲットが毎回必要とする)

私はこのソリューションに満足しており、Android の将来のGradle ベースのビルド システムを待ちます。運が良ければ、この Ant ベースのシステムよりも用途の広いターゲットを提供できます。

于 2013-08-03T15:28:05.277 に答える