我是一个新的
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 {}块?