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轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...