虽然镇楼的漫画有点反讽架构设计的意思,但是本文还是主要记录上半年重点在啃的一本书——《架构整洁之道》。Bob大叔的整洁三件套大概是值得每个软件开发从业者都不断去深入学习的一个系列了,所谓“不断”,就是指三年读一遍、五年读一遍、十年再读一遍,估计不同的时间点读到的体会都不一样。经典大概就是这个意思了吧。
聊聊用户体验
用户体验大概已经是被供上神坛的一个东西,这种情况从我的老东家那边就开始深有体会了。在各路产品大拿和UI设计师的滔滔不绝之下,卑微的程序猿们懵懵懂懂跌跌撞撞的敲了很多神奇的代码,总结起来大多数可能只有一句话——跟苹果相似的界面、交互和动画设计,大概就是好的用户体验了。这一段与主题弱相关且略微有点不友善,只能算是一个Android程序猿角度没啥大用的吐槽罢了。
但使新年胜故年——2019
在从搜索引擎里面抄到一个好标题之后,施施然打开去年的年终总结博客,惊奇地发现去年居然懒到什么FLAG都没有立,还美其名曰“方向无差,必有所得”——唔,感性就是这点不好,很难量化呀……好在没有按照去年最坏的预期连年度总结都没有,年年岁岁、总还得停一停看一看,不然怎么能使新年胜故年呢。
九月初
新人点红妆
携手拜高堂
同饮交杯酒
静好岁月长
长城壮烽火
大漠看苍狼
归看桂枝处
又是满城香
apkanalyzer(3)-走读dex/arsc解析命令
接下来选两个具体的命令,来走读一遍实现功能的流程、使用了哪些功能库。第一个选择解析dex的最后一个功能,打印指定类、方法的反编译代码;第二个选择资源文件解析的最后一个命令,输出指定xml二进制文件对应的可读版本。
apkanalyzer(2)-命令实现基本结构
熟悉了apkanalyzer的基本功能,接下来就看下这个工具的具体实现了。本文主要根据命令执行的基本流程,尝试理解它实现的基本结构。
apkanalyzer(1)-命令使用体验
分析过apkChecker之后,很自然的会想起android studio中的APK分析功能,把一个APK文件丢到IDE里面,会自动分析出里面各种文件的信息。官网上也有相关说明——Analyze your build with APK Analyzer。从黑盒上讲,两个工具都是通过APK文件的输入,获取一堆相关的分析结果出来,那么这两个工具在具体实现上有哪些异同,在同一个功能点上使用了哪些分析工具,整体上的功能对比是什么样的呢。
Matrix-APKChecker源码分析(2)
根据文档ApkChecker目前支持13种功能检测。
- 读取 manifest 的信息
- 按文件大小排序列出 apk 中包含的文件(2)
- 统计方法数 (1)
- 检查是否经过了资源混淆(AndResGuard)(2)
- 搜索不含 alpha 通道的 png 文件(2)
- 检查是否包含多个ABI版本的动态库(3)
- 搜索未经压缩的文件类型(2)
- 统计apk中包含的R类以及R类中的 field count(1)
- 搜索冗余的文件(2)
- 检查是否有多个动态库静态链接了 STL(3)
- 搜索 apk 中包含的无用资源(2)
- 搜索apk中包含的无用 assets 文件(2)
- 搜索 apk 中未经裁剪的动态库文件 (3)
官方定义这个工具是【Apk 分析减包利器】,可以通过这些功能点看出,控制APK包大小的一些思路。基本可以分为几类:
- 方法/属性/R文件等,可能引起multiDex的方向,主要从dex文件方面做约束——代码方面
- 资源文件,是否存在可压缩的、重复冗余的、没使用的、可替换格式的文件——资源方面
- so库相关,是否可以去掉用户量极少的abi库、是否可剪裁、是否可以优化掉STL链接等——so方面
在Matrix的github文档中,有专门说明ApkChecker的部分——Matrix Android ApkChecker。其中描述了各个配置项、执行流程、每个检查项的基本原理和具体的分析实例,比较全面。这里参考文档和代码,对其中一些关键点,做一些笔记。
Matrix-APKChecker源码分析(1)
工具简介
Matrix-ApkChecker — Apk 分析减包利器
Matrix是微信开源的APM工具,APKChecker是其中针对APK文件做静态分析的工具,是Matrix的一部分。上面两篇腾讯云的相关文章,介绍了Matrix&ApkChecker的一些基本功能。本文针对APKChecker的源码做一个简单的分析,聊一下该工具各个功能的实现原理。采用的是Matrix工程,master分支4月16号的代码为分析源码。
短书评-2019.1
最近两个月读完的三本技术书籍。