ADT プラグインをインストールすると、次のビルダーが Android プロジェクトに対してアクティブになります。
- Android リソース マネージャー
- Android プリコンパイラ
- Java ビルダー
- Android パッケージ ビルダー
出力ディレクトリを見ると、次の成果物が作成されます。
- resources.ap_ (リソースとコードなしの APK/ZIP のみ)
- gen/R.java (リソースの自動生成リスト)
- Java バイトコードを含む .class ファイル
- クラス.dex
- ${プロジェクト名}.apk
私のプロジェクトでは、いくつかのコード アーティファクトを自動生成し、一般的にビルド プロセスをより厳密に制御する必要があります。最初は、Resource Manager が resources.ap_ の作成を担当し、プリコンパイラが R.java を作成し、Java ビルダーが当然のことを行い、次に Android Package Builder が classes.dex を作成し、classes.dex と resources.ap_ を結合したと考えました。 APKファイルを作成します。
最初の 2 つの手順を無効にし、resources.ap_ のコピーを配置するカスタムのプレビルダーを作成しました。これは同等であると考えました。そのような幸運はありません。
残念ながら、最終的な Android Package Builder は res/ からリソースを直接丸呑みするようで、resources.ap_ を無視します。実際、最初の 2 つのビルド手順は、R.java を生成する以外にはほとんど何もしていないようです。
これが本当に問題になるところです。最終ビルド ステップを無効にして独自の APK ファイル (まったく同じ名前) を配置すると、次のエラーが発生します。
[2011-02-27 20:25:28 - android-premium] ------------------------------
[2011-02-27 20:25:28 - android-premium] Android Launch!
[2011-02-27 20:25:28 - android-premium] adb is running normally.
[2011-02-27 20:25:28 - android-premium] Could not find android-premium.apk!
Android Package Builder (識別可能な構成がない) では、個々の ./res/ ファイルを提供する必要があります。これがないと、(Eclipse からではなく) デバイスでプロジェクトを起動できません。
この分野でより良いアイデア/経験を持っている人はいますか?