android – 将API密钥保存在gradle.properties中

前端之家收集整理的这篇文章主要介绍了android – 将API密钥保存在gradle.properties中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个新的 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 {}块?

解决方法

>这个间接的想法是允许您将API密钥存储在未上传到版本控制的文件中:gradle.properties是本地文件,不应该存储在版本控制下,而BuildConfig是一个生成的类,所以它只会在构建时创建.将API密钥存储在一个明确的字符串中,这绝对是更容易的,但是您必须将其提交到repo. >在构建期间,Gradle将生成BuildConfig文件来存储一些构建相关的常量.您可以使用buildConfigField命令来指示Gradle将自定义字段添加到BuildConfig中.项目建成后,您可以在源代码中引用这些常量.

猜你在找的Android相关文章