美文网首页
Android私密开发信息存储

Android私密开发信息存储

作者: FallBlank | 来源:发表于2017-03-02 16:03 被阅读0次

    日常开发中总会遇到这样的一个问题:如何保存第三方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私密开发信息存储

          本文链接:https://www.haomeiwen.com/subject/jpzhgttx.html