【发布时间】:2016-06-13 20:53:38
【问题描述】:
我是 android 新手,正在从事一个项目,我看到我得到的 API 密钥保存在 gradle.properties 中:
MyOpenWeatherMapApiKey="1c3ae96f93a0094e8a7chsjdgfid04aed3f10"
然后在build.gradle(module:app) 中添加以下几行:
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
所以,在我的主程序中,我使用这个 api 访问数据,其 URL 是由这段代码获取的:
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());
所以,我的问题是,为什么要在进行更改时将 appid 存储在 gradle 部分中。不能只在主程序中直接访问吗?
我的问题的第二部分是 gradle 部分实际发生了什么,尤其是 buildTypes.each{} 块?
【问题讨论】:
-
谢谢。您的问题帮助我配置了我的项目。