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