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

  1. android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息

    android获取电池信息:android获取电池容量.技术.电压.电量.温度等信息 1.这里我仅展示工具类,需要注意的是这里的部分值要刷新后才能显示,添加刷新UI的方法即可,而且电量温度等都是变化的 ...

  2. android获取GPU信息;android获取GPU渲染器、供应商、版本和扩展名等信息

    android获取GPU信息:android获取GPU渲染器.供应商.版本和扩展名等信息 效果: 1.布局文件 <?xml version="1.0" encoding=&q ...

  3. android监控指纹信息变化,android监听指纹变化(解决反射思路在android10不生效的问题)...

    前天偶尔运行代码,一个段异常映入眼帘,我擦android10上反射机制监听不到指纹id等数据了,原因是android10彻底抛弃了之前指纹的api.所以反射不到了. 怎么解决这个问题?我们换个思路当然 ...

  4. android 静态注册wifi广播,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  5. android 存储无法写入,在Android中的外部存储中写入文件

    我想在外部存储sdCard中创建一个文件并写入它.我已经通过互联网搜索并尝试但没有得到结果,我已经在Android Manifest文件中添加了权限,我在模拟器上这样做,我正在尝试下面的代码和获取ER ...

  6. android广播注册源码,android 广播源码简要分析-注册

    android broadcast 1,广播注册 静态注册: 在系统服务启动时会添加PackageManagerService,在该类的构造方法中就会对各个应用安装目录的apk文件进行扫描解析 详细步 ...

  7. android 存储方式简书,Android的多种数据存储方式

    1. 简介 作为一个完整的应用程序,数据存储操作是必不可少的.现在Android的离线缓存就是通过网络良好状态时将从服务器收到的数据保存到本地.Android系统中主要提供了3种方式进行数据存储,分别 ...

  8. android获取指纹信息最新,# android 指纹识别并检测指纹库是否变更

    android API 23时新增的功能,指纹识别 主要类:FingerpringManager 在API28后,FingerpringManager被遗弃,使用BiometricPrompt,此时授 ...

  9. android 分析堆栈信息,分析android异常时的堆栈信息

    android framework异常时会打印如下log,分析往往无从下手: 24422 08-17 15:09:02.212 I/DEBUG   (   52): *** *** *** *** * ...

最新文章

  1. 【Quartz】Quartz
  2. page fault in nonpaged area 蓝屏_由于错误的更新,安装Windows 10 KB4549951后蓝屏死机解决办法...
  3. mysql删除delete语句
  4. java 泛型 子类_Java泛型:要求泛型成为某种类型的子类
  5. java中treemap_Java TreeMap – Java中的TreeMap
  6. ADO.NET五大对象详解(转)
  7. 查词根词缀特别好的网站
  8. Word中如何删除某一页的页眉,不影响其他页眉
  9. 公网远程开机(唤醒家庭PC)
  10. [经验教程]拼多多购物车在哪里怎么加入购物车合并一起付款?
  11. 闲谈IPv6-我们在技术思维上需要作出改变(1)
  12. Win10下配置PHP环境变量
  13. ATEN CS22DP 2端口USB DisplayPort带线式KVM多电脑切换器 (外接式切换按键)
  14. python357左轮尺寸_有小伙伴需要左轮枪~DUANG!DUANG!DUANG~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!...
  15. 使用AWS迁移工具MGN迁移腾讯云到AWS
  16. 多模分频器原理及simulink建模仿真
  17. Fmoc-NH-PEG-MAL,芴甲氧羰基保护氨基-聚乙二醇-马来酰亚胺;内附FMOC脱保护条件
  18. 一个大尺度超文本网络搜索引擎的剖析
  19. N1(armbian)安装cups连接EPSON L360打印机
  20. mysql 多字段单关键字_mysql多关键字多字段模糊查询

热门文章

  1. onbeforeunload不触发_关闭浏览器时触发onbeforeunload事件的例子
  2. python插件使用教程_Python Kite 使用教程 轻量级代码提示
  3. 万字长文,学会ElasticSearch,这一篇就够了!
  4. 2021年原生JS实现影集展示特效
  5. 适合视力障碍者的Linux
  6. JAVA开发(关于写代码与数学)
  7. 追你到天涯海角(1)
  8. 银色情人节,和TcaplusDB数据库一起过节吧!
  9. 新加坡数字银行牌照争夺战:蚂蚁、小米、腾讯、头条等21家,谁能取胜?
  10. RelativeLayout圆角处理