5

私は Android アプリケーションを開発しており、市場でさまざまな言語用にいくつかの異なる apk を出荷したいと考えています (すべての言語には膨大なファイルのバンドルが含まれており、すべての言語バンドルで 1 つの巨大な apk を作成することは避けたいと考えています)。

したがって、必要なのは、各言語のマニフェスト ファイルを少しカスタマイズすることです。たとえば、アプリケーションのパッケージや、場合によってはアプリケーションのバージョンなどです。ファイル (この投稿を参照)。問題は、本番用の apk を準備するために ant を使用していることですが、それ以外の場合は Eclipse を使用して開発しているため、プロジェクトも IDE で動作する必要があります。Eclipse は完全なマニフェスト ファイルを必要とし、私が知る限り、ant ビルドに使用するテンプレートを理解できません (誰かが私が間違っていることを証明してください)。

私の問題は、大部分が同一である 2 つのマニフェスト ファイル (1 つはテンプレート化され、もう 1 つは Eclipse 用に完全なもの) を維持することを避けたいということです。現在、2つの可能なアプローチを考えることができますが、それらを達成する方法がわかりません:

  • マニフェスト ファイルで何らかの定義インジェクションを使用します。AndroidManifest ファイルの本体に特定の xml ファイルをインジェクトでき​​れば、同じ部分を 1 つの xml 部分に保持し、相違点のみをカスタマイズできます。
  • プリビルド ルーチンの代わりに一連の ant タスクを使用して Android プロジェクトをビルドするように Eclipse を構成できれば、IDE で実稼働 apk をビルドする方法を統合できる可能性があります。

上記の2つのいずれかを達成する方法を知っている人、または私の問題を解決する方法が他にある場合は、助けてください!

4

2 に答える 2

2

私が働いている会社では、Eugenが提供するアプローチをほぼ使用して、特定のアセット、スタイル、文字列、構成を交換することで、単に異なるブランドにする必要があるアプリのビルドプロセスを自動化しています。プロジェクトとビルドプロセスは次のように設定する傾向があります。

  1. Androidプロジェクトを作成し、特定のブランドで機能するように設定します。これにより、Eclipseからビルドして実行できるようになります。異なるブランドのリリース間でコードベースが変更されないと仮定すると、それは問題ないはずです。
  2. 次のようなantビルド構成を作成します。
    1. 変更されるファイルをバックアップディレクトリにコピーします
    2. 構成ファイルに従ってプロジェクトファイルを変更します(以下を参照)
    3. プロジェクトソースをコンパイルし、リリースキーで署名します(リリースビルドを作成する場合)
    4. 手順1のファイルをコピーして戻し、変更を上書きしてプロジェクトを元の状態に戻します。
  3. シナリオ内のすべての「ブランディング」または言語固有のリリースの構成ファイルを作成します。

基本的に、これらの手順により、ant buildコマンドで適切な構成を提供するだけで、ブランド/パートナー/言語固有のビルドを作成できます。私たちの場合、それは次のようになります。

ant partner-release -Dpartner=stackoverflow

ここで、「stackoverflow」は同じ名前の構成を指します。この場合、これらの構成ファイルは、その特定のビルドで置き換えられるすべてのパラメーターを含む小さなxmlファイルです。文字列を含めることもできますが、アセット/リソースにコピーする必要がある他のファイル(ロゴ画像など)を指す場合もあります。例えば:

<config>
    <version_name>1.00</version_name>
    <version_code>1</version_code>
    ...
</config>

さらにいくつかのポインタ:

  • xmltaskプロジェクト内のxmlファイルを変更するために使用します。たとえば、マニフェストとリソース。
  • 前述のタスクは非常に使いやすいため、上記のように、ビルド構成ファイルもxmlファイルとして設定されます。人間が読める形式で、変更が簡単で簡単です。
  • replaceまた、タスクを使用ReplaceRegExpして、ほとんどすべてのファイルの構成に依存する変数を変更できます。後者は、ビルド時にソースコードを変更する場合に特に便利です。
于 2012-08-31T07:01:39.790 に答える
2

ant replace タスクを見てみましょう:

<replace file="${build.out}/src/config.prop" token="@@@" value="${build.version}-${build.type}"/>

ただし、値が一意であることに注意する必要があります。

また、eclipse マニフェストを、echoxmlタスクによって生成されたマニフェストに置き換えることもできます。

または、xml 操作に関するこの素晴らしいタスクを再利用することもできます。

于 2012-08-29T11:05:31.990 に答える