技术文章和学习笔记

互联网 & 技术 & 产品 & 阅读 & 生活

0%

作为 Android 开发,我们平时接触最多的工具之一非 ADB 莫属。不过平日里开发的时候,我们都是通过 AS 间接试用 ADB. 实际上,除了作为调试的中间桥梁,ADB 还有许多强大的功能。这篇文章,我通过 ADB 在实况手游中自动比赛的应用展示下 ADB 在开发之外的应用。

阅读全文 »

最近因为需要做文本的字符串编码解析,所以引用了 IBM 的一个开源库。不过这个库体积实在太大,9M!讲道理,对于文本编码方式解析这种功能,如果需要使用 9M 的代码才能完成确实有些夸张。所以,我猜想这个库中应该包含了一些我并不需要的类文件。因此,我考虑从这个 jar 包当中移除这些我并不需要的类文件。试用手动删除的方式并不容易,因为文件太多,而且引用关系不容易确定。所以,我决定使用 Python 脚本来做 jar 包瘦身的工作。

阅读全文 »

作为独立开发者,应用被破解是一件非常让人烦恼的事情。之前有同学在我的一篇博文下面问,有没有一些 Android 防破解的方法。在多次加固、破解、再加固、再破解的过程中,我也积累了一些思路和方法。这里分享一下,如果需要用到,可以作一个参考。

阅读全文 »

实现过程并不复杂,但是这种多叉树结构的算法我遇到的还是挺多的。实际在开发过程中遇到的情况要远比上面复杂得多。不过,我们只有掌握了上述基本的结构,才能在面对更加复杂的情况的时候随机应变。

阅读全文 »

使用 APT 实现注解扫描,如果不是组件化的应用场景,并不需要实现上述缓存和插桩的逻辑,比如 ButterKnife,只需要调用一下对应的方法,完成 APT 相关代码的自动装载即可。但是如果是组件化场景,为了实现指定包名下面的类的扫描,走插桩和缓存似乎是必经之路。不过准确来说,我们是不需要插桩的,只需要 transform 阶段能够扫描到类,存储下来,然后应用启动的时候动态加载即可。所以,除了插桩之外,我们还有没有其他的可选的办法呢?当然有,比如读取到类之后写入到 json 文件里面,然后启动的时候读取 json 文件并解析出生成的类。不过,这种方式性能上会比插桩稍逊一筹。

阅读全文 »

Kotlin 的 data class 自动覆写了 equals() 和 hashCode() 两个方法。虽然有些时候可以给用户带来便利,但是如果使用不慎就会出现一些匪夷所思的问题,比如这里遇到的一个问题是,将一个对象作为键放到 Map (或者 Set)之后,修改了对象的一些属性之后再从 Map (或者 Set)用它作为 key 读取的时候返回的数据是 null.

阅读全文 »