我是一个新的
android,并在一个项目,我看到我得到的API密钥保存在gradle.properties为:
MyOpenWeatherMapApiKey = “1c3ae96f93a0094e8a7chsjdgfid04aed3f10”
然后在build.gradle(module:app)中,我添加了以下几行:
buildTypes.each {
it.buildConfigField 'String','OPEN_WEATHER_MAP_API_KEY',MyOpenWeatherMapApiKey
}
所以,在我的主程序中,我正在使用这个api访问数据,其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部分实际发生了什么,特别是与buildTypes.each {}块?