0

他の多くのプロジェクトのバックエンドとして機能するライブラリプロジェクトがあります。Web接続や解析などを行います。次に、これに基づいて構築された他のフロントエンドプロジェクトがあります。開発環境とサーバー環境では、ビルドタイプのコードベースの特定の値を置き換えるANTビルドスクリプトを作成しました。したがって、2つのターゲットbuildDevとがありbuildProdます。

依存(ライブラリ以外のプロジェクト)を構築するときに値を正しく設定する方法はありますか?たとえばant debug、プロジェクトで行う場合はバックエンドを構築し、ant buildDev行うant release場合はで行いant buildProdます。

私はそれが不可能であるとかなり確信しているので、代替案は何ですか。

不思議なことに、カスタムビルドは、ビルドのタイプに基づいて異なる値が割り当てられた静的変数を持つファイルを置き換えるだけです。複雑すぎることはありません。

4

2 に答える 2

1

Ant には、ファイル内のプロパティを編集するために使用できるさまざまなタスクがあります。

プロパティファイルについてはご存知だと思いますので、こちらのドキュメントを使用する場合:

http://ant.apache.org/manual/index.html

それはおそらくあなたを助けることができます.

Ant スタイルのプロパティ ファイルで変数を設定すると、特定のビルドでは、ビルドごとに個別のファイルを作成できるため、変数を正しく設定できます。

ソースに変数を設定することについて話している場合は、コピー タスクを試してください。

http://ant.apache.org/manual/index.html

コピー タスクのフィルターチェーンを使用すると、ファイルから特定のコード行を置き換えることができます。したがって、server_ip などの名前の変数がある場合、フィルターチェーンを使用してその値を変更し、そのソース ファイルをツリーに再コピーできます。

これがあなたの質問に答えることを願っています。そうでない場合は、優しくしてください。私は何かに答えるのがちょっと新しいので、Android の投稿に少し噛まれました (笑)。

于 2013-01-01T09:05:14.947 に答える
0

解決策を見つけました。デフォルトの Android Antbuild.xmlは、呼び出し時にリリース名を子ライブラリ プロジェクト スクリプトに渡します。次の行とそれに続くコードで詳細を説明します。

<!-- figure out which target must be used to build the library projects.
If emma is enabled, then use 'instrument' otherwise, use 'debug' -->
<condition property="project.libraries.target" value="instrument" else="${build.target}">
    <istrue value="${build.is.instrumented}" />
</condition>

次に、相互に依存するすべてのプロジェクトで同じターゲットを設定するだけです。

于 2013-01-01T09:10:48.683 に答える