Kaede Akatsuki

中二病也要开发 Android

如何加载 SD 卡中的 so 库

Android中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其封装好的方法。后者一般是使用NDK工具从C/C++代码编译而成,运行在Native层,效率会比执行在虚拟机的Java代码高很多,所以Android中经常通过动态加载.so库来完成一些对性能比较有需求的工作(比如T9搜索、或者Bitmap的解码、图片高斯模糊处理等)。此外,由于.so库是由C++编译而来的,只能被反编译成汇编代码,相比Smali更难被破解,因此.so库也可以被用于安全领域。

与我们常说的基于ClassLoader的动态加载不同,SO库的加载是使用System类的(由此可见对SO库的支持也是Android的基础功能),所以这里这是作为补充说明。不过,如果使用ClassLoader加载SD卡里插件APK,而插件APK里面包含有SO库,这就涉及到了对插件APK里的SO库的加载,所以我们也要知道如何加载SD卡里面的SO库。

阅读全文

海淘 Filco 忍者 87 青轴键盘

机械键盘这种东西就像SSD硬盘一样,一旦用上了就回不去。
想我这种穷惯了的人,一直以来都是用着买PC送的双飞燕或者大白鲨键鼠套,从来就不会想着花大价钱买一个键盘。第一买键盘大概是我高二的时候,那时候买电脑送的键盘都用烂了,就琢磨着买一个新的,之后周末在我生活的小城市(潮州)的市区逛了一个下午,愣是没有决定买哪一款,最后还挑着最便宜的买了一款。
上大学的时候,我就想着自己居然选了计算机专业,就得给自己买个好点的键盘,所以那时候买了学校数码店最贵的微软套装,不过马上就后悔了,因为微软的键盘印了大量的中文数字,对我这个喜欢简洁的人来说实在难以接受,而且,比同行贵了一大截的微软键盘居然有按键冲突问题,所以这时候开始我更加决心“键盘能用就行了,没必要买贵的”。
直到后来开始工作了,我见识到公司研发机的SSD硬盘的好处,所以开始给自己入手SSD。SSD让我意识到了生产工具对于提高工作效率的作用,所以我开始把目光放到键盘上。

阅读全文

Android 动态加载技术的类型

现在网络上有许多关于动态加载的介绍的文章,谈及的关键词汇有动态加载、插件化、热部署、热修复等,对于一些刚接触这方面开发技术的人来说,可能容易混淆。
虽然我在动态加载系列的文章中或多或少有谈到这些概念的区别,但是我觉得认识这些区别对于使用动态加载技术还是挺重要的,所以特别开这个新的文章进行分析。

阅读全文

Learning in Android

3年Android程序设计的自我吐槽。
春节期间,因为使用VPN梯子的姿势不对,导致Chrome的Google书签和xMarks书签发生了冲突,所以有一些重要的书签可能丢失了,我需要整理一下。看了一边满屏的技术教程,顿时产生了颇多的思绪。
Okay,来看看都有哪些书签

阅读全文

有没有必要阅读 Android 源码

或许对于许多Android开发者来说,所谓的Android工程师的工作“不过就是用XML实现设计师的美术图,用JSON解析服务器的数据,再把数据显示到界面上”就好了,源码什么的,看也好不看也罢,反正应用层的开发用不上,再加上现在优秀的轮子越来越多,拿来主义泛滥,能用就是,反正老板也不关心是不是你自己写的,用我现在老大的话来说,阅读源码似乎只是一种“锦上添花”的事,有自然好,没有也罢。
那么,作为Android开发者的自我修养,到底有没有必要阅读AOSP以及其他开源项目的源码呢?

阅读全文

ClassLoader 的工作机制

早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载。这些插件大多是一些Jar包,而使用插件其实就是动态加载Jar包里的Class进行工作。这其实非常好理解,Java代码都是写在Class里面的,程序运行在虚拟机上时,虚拟机需要把需要的Class加载进来才能创建实例对象并工作,而完成这一个加载工作的角色就是ClassLoader。

阅读全文

Android 动态加载简单易懂的介绍方式

我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装APK就能升级应用的功能(特别是 SDK项目),这样一来不但可以大大提高应用新版本的覆盖率,也减少了服务器对旧版本接口兼容的压力,同时如果也可以快速修复一些线上的BUG。

这种技术并不是常规的Android开发方式,早期并没有完善的解决方案。从“不明觉厉”到稳定投入生产,一直以来我总想对此编写一些文档,这也是这篇日志的由来,没想到前前后后竟然拖沓着编辑了一年多,所以日志里有的地方思路可能有点衔接得不是很好,如果有修正建议请直接回复。

阅读全文

123456