2016-03-01 11 views
15

で保存APIキー私はアンドロイドに新しいですし、私は私が得たAPIキーは次のようにgradle.propertiesに保存されていることがわかりプロジェクトに取り組んで:gradle.properties

build.gradle(module:app)

MyOpenWeatherMapApiKey="1c3ae96f93a0094e8a7chsjdgfid04aed3f10"

そして、

:私は、そのURLのコードのこの部分で持っているこのAPIを使用してデータをアクセスしていますが、私のメインプログラムでは、

buildTypes.each { 
      it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey 
     } 

ので:私は、次の行を追加しています

final String FORECAST_BASE_URL = "http://api.openweathermap.org/data/2.5/forecast/daily?"; 
      final String QUERY_PARAM = "q"; 
      final String FORMAT_PARAM = "mode"; 
      final String UNITS_PARAM = "units"; 
      final String DAYS_PARAM = "cnt"; 
      final String APPID_PARAM = "APPID"; 
      Uri builtUri = Uri.parse(FORECAST_BASE_URL).buildUpon() 
        .appendQueryParameter(QUERY_PARAM, params[0]) 
        .appendQueryParameter(FORMAT_PARAM, format) 
        .appendQueryParameter(UNITS_PARAM, units) 
        .appendQueryParameter(DAYS_PARAM, Integer.toString(numDays)) 
        .appendQueryParameter(APPID_PARAM, BuildConfig.OPEN_WEATHER_MAP_API_KEY) 
        .build(); 
      URL url = new URL(builtUri.toString()); 

私の質問は、変更を行うことのすべての緊張を取って、その部分をグラデル部分に格納するのがなぜかということです。メインプログラムで直接アクセスすることはできませんか?

私の質問の2番目の部分は、特にbuildTypes.each{}ブロックを使って、グランドル部分で実際に起こっていることですか?

+1

ありがとうございました。あなたの質問は私のプロジェクトを構成するのに役立ちました。 –

答えて

19
  1. この間接のアイデアは、あなたがバージョン管理にアップロードされていないファイルでAPIキーを保存できるようにすることです:gradle.propertiesはローカルファイルであり、バージョン管理下に格納すべきではない、とBuildConfigが生成されますしたがって、ビルド時にのみ作成されます。単純な文字列としてAPIキーをどこかに格納する方が簡単ですが、それをリポジトリにコミットする必要があります。
  2. ビルド時に、Gradleはいくつかのビルド関連の定数を格納するためにBuildConfigファイルを生成します。 buildConfigFieldコマンドを使用して、GradleにBuildConfigにカスタムフィールドを追加するよう指示することができます。プロジェクトの作成後、ソースコード内でこれらの定数を参照できます。
+0

これを他のAPIキーのmanifest.xmlファイルでどのように使用できますか? –

関連する問題