1

サーバーと通信する Android アプリを開発しました。私は2つのサーバーを持っています。1 つは開発用で、もう 1 つは本番用です。

私の Android ソース コードでは、ビルド時にサーバー URLを手動で変更する必要があります。

例:デバッグ モード releaseの場合、次を使用します。

String url = "http://develop/service"

プロダクションリリースの場合、私は以下を使用します:

string url = "http://production/service"

urlようなリクエスト送信関数に変数を渡しますsendReqToServer(url);

別のリリースのこの URL の変更を手動で変更するのにうんざりしています。代わりに、Ant スクリプトを使用して、 (開発サーバーを使用) & (運用サーバーを使用)urlのように、別のリリース ビルドを作成するときにコマンド ラインを使用して指定したいと考えています。ant release-developant release-product

これを実現するには、 build.xml<target name="release-develop">で&を作成する必要があると思います<target name="release-product">。しかし、コマンド ラインからアプリの URL を指定する ant スクリプトを作成する方法がわかりません。

誰かがそれを行う方法についてより詳細な情報を提供してもらえますか?

4

3 に答える 3

2

task を使用replaceして、URL をオーバーライド/置換できます。次のようになります。

<target name="release-product">
    <replace file="path to your *.java class which contains url" token="@URL@" value="http://production/service">
    <!-- compile app -->
</target>

<target name="release-develop">
    <replace file="path to your *.java class which contains url" token="@URL@" value="http://develop/service">
    <!-- compile app -->
</target>

ソース コードを変更する必要があるため、これは最善の解決策ではありません。URLを読み取る構成ファイルを作成することをお勧めします。この場合、次のようになります。

あなたのUrlClass.java

String url = Config.getUrl(); // get Url method will read url from config file

Appconfig.ini

url=http://develop/service

build.xml

<target name="release-product">
    <echo file="appconfig.ini" override="true">url=http://product/product</echo>
    <!-- compile app using appconfig.ini -->
</target>

<target name="release-develop">
    <echo file="appconfig.ini" override="true">url=http://develop/product</echo>
    <!-- compile app using appconfig.ini -->
</target>

もちろん、<echo/>タスクを使用して appconfig.ini ファイルを作成する必要はありません。アイデアは、appconfig.ini別のバージョンを使用してファイルをオーバーライドできるということです。

于 2013-03-13T12:47:21.683 に答える
0

他の回答と同じように設定ファイルを使用する可能性がありますが、開発ビルドのみをログに記録するために通常行う別の可能性を次に示します。

if( BuildConfig.DEBUG  )
{
    //set develop
}
else
{
    //set release
}

この BuildConfig.DEBUG は、デバッグ モードまたはリリース モードでコンパイルされたかどうかに基づいて設定されます。

于 2013-03-13T13:02:40.753 に答える