2011-11-07 5 views
2

私は現在、外部サーバーと対話するアンドロイドアプリを作成しています。Android - dev環境に応じて複数のリソースxmlファイルを持つ

開発中にAndroidがテストサーバーインスタンスに接続していることを確認しますが、アプリケーションはプロダクションサーバーに接続する必要があります。

現在、サーバのURLは、xmlファイルの1つ、res/values/strings.xmlに <string name="server_url">XYZ.example.com</string>として格納されています。

現時点では、状況に応じてローカルマシンのxmlファイルを変更しています。

このようなケースを処理するための慣習的な方法は何ですか?

答えて

1

XMLファイルはかなりです。例は、mapview apiキーによって行われます。

マップビューアプリケーションを開発するには、ビルド証明書に基づいたキーが必要です。ほとんどの人は、デバッグキーを使ってビルドしてテストし、リリースキーでデプロイします。ビルドキーごとに異なるapiキーを要求する必要があります。私は両方のAPIファイルのキーを自分のリソースファイルに保存しておき、デバッグの際に必要としないものをコメントアウトします。

代わりに、2つの文字列を文字列ファイルに保存し、使用するキーを選択するプログラム的な方法を使用することもできます。 AdMobではこのタイプのアプローチを使用しています。つまり、テストする場合は、追加リクエストにテストデバイスを追加します。世界中の誰もが同じ電話機を使用しているだけでテストを追加することを望んでいないので、テスト対リリースビルドのチェックでコールをラップする必要があります。私はxmlファイルで定義された整数リソース値でこれを制御します。これは、C/C++ DEBUGマクロと同様に動作します。私はまだリソース値の値に変更する必要がありますが、私は1つの場所でそれを行う必要があります。別の方法としては、テストサーバーを非表示にするコメントを使用することができます。例えば

String server = context.getString(R.string.realserver); 
server  = context.getString(R.string.testserver); //comment out this line prior to release 

を私がコメント/コメント解除方法のファンではないので、その簡単に忘れて、あなたはリソースにアクセスする複数の場所を持っている場合は特に。

これを処理するより良い方法がある場合は、私も興味があります。

+0

もう1つの例はhttp://stackoverflow.com/questions/1743683/distinguishing-development-mode-and-release-mode-environment-settings-on-androidにあります。ここではフラグが組み込まれていますが、修正が必要ですマニフェストファイルの有効/無効を切り替えます。 – gnac

0

これは、グラデーション付きのアンドロイドスタジオを使用する場合のバストプラクティスと見なされます。

あなたがこの記事を見てみたいことがあります。http://tulipemoutarde.be/2013/10/06/gradle-build-variants-for-your-android-project.html

も利用可能ユーチューブビデオで:​​

これをも、あなたは同じアプリのための2つの異なるパッケージ名を持つことができます。

これは、あなたが探しているものを正確に達成するためにグラデルフレーバーを使用し、実装が非常に簡単です。

関連する問題