2016-03-01 13 views
15

Jestem nowy android i pracy nad projektem, gdzie widzę, że klucz API, które mam są zapisywane w gradle.properties jak:zapisywania klucza API w gradle.properties

MyOpenWeatherMapApiKey="1c3ae96f93a0094e8a7chsjdgfid04aed3f10"

A potem w build.gradle(module:app) dodaję następujące linie:

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

Więc, moim głównym programie mam dostępu do danych za pomocą tego interfejsu API URL, którego mam przez ten kawałek kodu:

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()); 

Moje pytanie brzmi, dlaczego biorąc pod uwagę całe napięcie wprowadzania zmian, należy przechowywać appid w części "gradle". Czy nie możemy uzyskać dostępu bezpośrednio tylko do głównego programu?

A druga część mojego pytania brzmi: co tak naprawdę dzieje się w tej części, zwłaszcza z blokiem buildTypes.each{}?

+1

Dzięki. Twoje pytanie pomogło mi skonfigurować mój projekt. –

Odpowiedz

19
  1. Ideą tego zadnie jest pozwalają przechowywać klucz API w plikach, które nie zostały przesłane do kontroli wersji: gradle.properties jest plikiem lokalnym i nie powinny być przechowywane pod kontrolą wersji, a BuildConfig jest generowany klasa, więc zostanie utworzona tylko w czasie kompilacji. Zdecydowanie łatwiej jest przechowywać klucz API gdzieś jako zwykły napis, ale potem musisz go zatwierdzić na repozytorium.
  2. Podczas kompilacji Gradle wygeneruje plik BuildConfig do przechowywania niektórych stałych związanych z budową. Możesz użyć polecenia buildConfigField, aby polecić Gradle dodawanie własnych pól do BuildConfig. Po zbudowaniu projektu możesz odwołać się do tych stałych w kodzie źródłowym.
+0

jak mogę użyć tego w pliku manifest.xml dla innych kluczy API? –