来源: https://www.worthpen.top/blog?id=6566174c6aa58e39d9301937
目录
1 应用密钥(key)
1.1 key(密钥)的基本概念
通常所说的密钥加密是采用的是非对称加密方式。即,每个key都含有一对密钥和一个hash值(指纹),一对密钥也就是公钥和私钥。公钥可以分发出去,私钥自己保密。用公钥加密的内容,只能用私钥解出;用私钥加密的内容,只能用公钥解出。
1.2 什么是.jks文件?
.jks文件是密钥库格式的文件,文件中保存了一个密钥库,密钥库中又保存了多个密钥。每个密钥中包含了两条数据:(1)密钥实体(Key entity)— 密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)(2)可信任的证书实体(trusted certificate entries)— 只包含公钥因此,我们平时说的证书也就是公钥,密钥也就是私钥,这里翻译可能有点乱,看了好多资料也没个准确的定义,重点是意会。
1.3 Alias(别名)又是什么?
别名则是这条密钥的名字,用来人为地区别分不同的密钥,密钥是字符,也不太好背。
1.4 jks和别名的password(密码)的关系?
jks的密码就是密钥库的密码,拥有这个密码就可以得到这个密钥库里所有密钥的公钥。别名的密码就是私钥的密码,拥有这个密码就可以得到私钥的密码,一般这个密码是开发者自己保留。
1.5 APK的签名机制有什么作用?
(1)APK的升级安装:APK如果使用一个key,发布时另一个key的相同的APK文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
(2)功能和数据共享:Android提供了基于签名的权限机制,一个APK可以向另一个以相同证书签名的APK开放自己的功能和实现数据共享。# 2 热更新
APP的热更新,类似于游戏中APP内下载更新,不需要重新安装,实现用户无感BUG修复。
3 应用版本号命名规则
软件版本号由四部分组成:
第一部分为主版本号。当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。
第二个部分为子版本号。当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。
第三个部分为阶段版本号。一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。
第四部分为日期版本号加其他。用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。
格式:<主版本号>.<次版本号>.<修订版本号>.<日期版本号>_<其他标记>,如 1.0.0.1225_zhangsan
上传服务器的版本命名规则:
versionName_versionCode
4 px, dp和sp等单位的区别
https://zhidao.baidu.com/question/2055784248244093667.html
5 应用架构
针对Flutter,我设计了如下架构:
app系统层(提供app通用的模块)
app应用层(提供app特有内容:
view.package(业务界面模块:
page.dart
通用widget.dart)
model.package(业务逻辑模块)
other.package(包含国际化等文件))
6 可以自动换行的自定义空间的设计思路
可以通过预先设定列数,比如先设定两列,再给要加入的自定义控件增加ID属性,ID为奇数则在第一列,偶数则在第二列。
7 多端数据同步
详情查看:知乎收藏/flutter/离线数据同步的思路。
8 app框架所需内容
splash界面;
统一路由;
国际化插件;
登录;
更新;
反馈;
隐私。