Android私密开发信息存储

日常开发中总会遇到这样的一个问题:如何保存第三方sdk的授权信息,或者网站的endpoint,在代码上传到Github上后不会被别人知道?

Easy?的确!

想法:只要将保存有私密信息的文件添加进gitignore文件就好了!
问题:那开发的时候如何在代码中读取这些信息呢?打包工具可不会把文件给你加到apk中。

想法:加入到raw资源文件夹,怎么样?这样可以很方便读取
问题:apk解压后raw文件是可以直接得到的,很不安全。

那么问题的本质就是读取,只要解决这个就好了。下面就来说说如何让gradle在编译时读取我们的私密信息文件,并打包进apk。

一、存储格式

类似于第网站的入口,第三方API授权这些信息最好的存储格式是键值对,例如:
app_key=123
endpoint=http://www.1024.com
然后通过Java的Properties类快速解析,获取想要的值。
一般都是把保存有这些信息的文件放到项目的根目录下(记得gitignore掉),或者添加到gradle.properties文件中(推荐使用这种方法,这种方法后续处理也最为便捷),也有人存放在local.properties里(不建议,local.properties的注释里说明了非gradle生成的内容很可能被reset掉)。

二、读取

我们的目的是要在项目的源代码中能得到对应的信息,但为了达到这个目的,我们需要gradle做为中间人帮忙转换一下。具体流程是:
私密文件——>gradle读取并处理——>BuildConfig静态域或者XML资源文件
分为两类讲:
(1)存储在非gradle.properties文件里时:
你需要在gradle的配置文件中加入如下代码,使得gradle读取你的文件,并最工程中生成相应的资源,以方便你访问。

1

resValue会生成相应的XML文件,可以通过R.string.app_key访问。
buildConfigField会讲变量生成为BuildConfig的静态域,可以通过BuildConfig.APP_KEY访问,需要注意图片的双引号的写法,否则生成的BuildConfig类不正确。

(2)存储在gradle.properties文件里时:
如下代码:

2

对!就是这么简单,实现同样的功能。这是因为gradle已经加载过gradle.properties文件了,你只需要使用就行。(语法类似于jsp网页)

三、结束

使用(1)时记得将文件名添加到gitignore中哟!

我是歪脖子,Android实习工,业余年轻“司机”,喜欢Python,热爱编程。欢迎follow我的微博:http://weibo.fallblank.me

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,228评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 7,677评论 3 25
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,173评论 8 72
  • 我们要得到一些目标有用的属性,比如当量直径 1.高宽比 这是目标的边界矩形的宽高比 x,y,w,h=cv2.bou...
    xxxss阅读 3,153评论 1 52