本节书摘来自异步社区《Android深度探索(卷2):系统应用源代码分析与ROM定制》一书中的第6章,第6.2节为什么要研究Android系统应用,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.2 为什么要研究Android系统应用Android深度探索(卷2):系统应用源代码分析与ROM定制可能有很多人认为Android系统应用本质上就是普通的Android应用,并没有像Android Framework、HAL、Linux驱动有研究价值。实际上,这种想法是大错特错了。没错!Android系统应用从程序的结构来看,与普通的Android应用非常类似,不过这些程序的价值远非普通的Android应用可比,因为有很多直接与Android应用交互的接口都是在这些系统应用中实现的。也就是说,了解了这些系统应用,就意味着对Android系统最上层的API有一个非常透彻的了解。
在Android源代码中有一个packages目录,所有的Android系统应用的源代码都在这个目录中。其中packages/app是最核心的目录,所有内嵌的APK程序都在该目录中。如果读者要加入自己的Android系统应用,也需要将APK文件放到这个目录中。如果想了解Android系统有哪些窗口(Activity)可用,app目录中包含的源代码将告诉我们一切。
除了app目录外,其他一些目录,例如,providers,也非常重要,尤其是providers目录,会告诉我们整个Android系统有哪些Content Provider可供调用,并且会得知详细的使用方法。当然,我们还可以从Android系统应用的源代码中得到更多的信息。例如,开发过桌面小部件的读者都知道,桌面小部件不支持将EditText控件放到桌面上,那么Android桌面的部件是如何做的呢?不过研究Android系统应用源代码还有一个更重要的目的,就是定制ROM。像现在很多流行的ROM,如HTC的Sense UI、小米的仿iPhone的UI,以及老罗模仿与创新并存的锤子ROM,都需要对Android系统应用的源代码相当了解实现(当然还要有很好的UI设计师才行)。
所以研究Android系统应用的源代码好处多多,综合起来读者至少从以下几个方面可以获益。
了解Android系统中有哪些窗口、Content Provider、Service和Broadcast可以与之交互。充分掌握很多高级应用的使用方法,例如,OTA升级是如何实现的。对实现原理比较感兴趣的读者可以通过这些源代码了解像Launcher2、短信管理等应用的内容构造。对于想编写可以完成系统级操作的应用的读者,可以学会如何将Android应用嵌入到ROM,升级为Android系统应用,进而可以做任何自己想做的事。对于那些有极客情结的读者,完全定制自己的ROM是最令人振奋的梦想,而Android系统应用将是实现这一梦想最重要的基石。从6.3节开始,我们将逐步深入Android系统应用的开发和测试过程,读者将从中体会到完全控制Android设备的快感和成就感!
相关资源:Android深度探索(卷2)系统应用源代码分析与ROM定制.part3