11

私の Android アプリは、サーバーに対していくつかの http 要求を行います。ただし、開発マシンで実行される新しい API コードをデバッグしていることがあります。何か(環境変数など)を渡すことができるようにしたいので、コード内に存在する場合は、AndroidエミュレーターからのAPIリクエストのホスト名としてそれを使用できます。

だから私は次のようなものを渡す方法を探しています:

API_SERVER=http://10.0.2.2/myapp/

私のコードでは、たとえば次のように使用します。

final static String API_SERVER_REAL = "http://example.com/";
final String apiServerOverride = System.getenv("API_SERVER");
final String API_SERVER = (null != apiServerOverride && !apiServerOverride.isEmpty() ? apiServerOverride : API_SERVER_REAL);
4

4 に答える 4

3

おそらく最も簡単な方法は、デバイス上のファイルに渡したいデータを /data/data に書き込むことです。あなたの Android アプリはデバイスを簡単に読み取ることができます (おそらく、.properties ファイルにして、それを使用java.util.Propertiesして読み取ることができます)。それを書き出すには、build.gradleファイルでこの種のタスクを使用します (セットアップ用の adb コマンドへの正しいパスを使用します)。

task writeValue(type:Exec) {
    commandLine '/usr/local/bin/adb', 'shell', 'echo \'API_SERVER=http://10.0.2.2/myapp/\' > /data/data/values.properties'
}

http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.Exec.htmlに Gradle exec タスクに関するドキュメントがあります。

このタスクは、Gradle タスク ビューを使用して Android Studio から手動で実行できます。

Gradle タスク ビューのスクリーン ショット

于 2014-02-24T05:14:18.780 に答える
1

Android Studio のバグにより、gradle 構成から vm または script パラメーターを渡すことができません。問題はここにあります。

Linux 環境 (おそらく Mac も) での回避策として、必要なすべてのパラメーターを追加できる bash 構成を作成できます。

于 2015-09-08T12:03:23.270 に答える
0

productFlavorsを使用することをお勧めします。各フレーバーには、環境固有の設定を含めることができます。必要なすべての を含む「環境」というクラスがpublic static final Stringあり、各製品フレーバーには、環境に設定された値を持つこのクラスの異なるバージョンが含まれています。

于 2014-07-21T01:27:24.923 に答える