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{}
?
Dzięki. Twoje pytanie pomogło mi skonfigurować mój projekt. –