Android Application Framework Outside, Service Understanding : 3

Android

大千世界,具体到社会运作,抽象至软件运行,不以规矩,不成方圆 ,所有的一切都要接受约束和管理,在一系列规则下生存。那么Android中众多的service又是如何被管理的?

Manage Android Service

Service要在Android系统中发挥作用,首先要解决一个问题:Android是如何使其成为系统服务的。

以AlarmManagerService为例,观察构造函数的调用位置,那么可以发现其出现在com.android.server.ServerThread,与此相似,很多Service的构造函数都出现在com.android.server.ServerThread。但是,令人奇怪的是,无论如何也找不到ServerThread.java这么一个文件,实际上它躲藏在SystemServer.java中。

注意:多个class声明在同一个文件里是一种不值得推荐的做法,尽管Android中这种做法并不少见。

[ Read More » ]

Android Application Framework Outside, Service Understanding : 2

Android

Service一词在Android中出现的概率非常大,以致不同上下文(Context)在着较大差异。如果详细划分,则可以分为四类:Application Service、Android Service、Native Service、System (Linux) Service。

尽管存在着差异,但是透过Reference中对Application Service的描述,仍旧可以概括出所有Service的本质:

A Service is an (application) component representing either an application’s desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.

[ Read More » ]

Android Application Framework Outside, Service Understanding : 1

Android

从2007年11月5日Google首次发布Android以来,这个绿色机器人 Open Source、体系架构卓越、应用开发便捷等亮点日益引起业界的浓厚兴趣,到目前为止陆续发布了1.1、1.5、1.6、2.0、2.1和2.2等版本,日趋完善的进取势头带动了移动互联网一股新的热潮。

文档名 Android Framework Outside,原本是打算用Inside,但是由于Framework内容繁复,如果用Inside,未免显得自负,况且我也无法做到了如指掌、洞若观火,因此取名Outside,表示这只是一知半解。

由于无法在短时间内面面俱到,目前优先选择其中的Service部分进行学习,整理成Service Understanding。但尽管Service只是Framework中一个组成部分,仍旧体积庞大,对其内容继续筛选后,选择WindowManagerService和ActivityManagerService进行重点研究。

[ Read More » ]

Android ProGuard: Please correct the above warnings first

Android

编译与反编译,一对相辅相成的矛盾。反编译有时候会和不光彩的事情联系在一起,以致于编译者常常费劲心思,加大反编译的难度,比如采用混淆代码等方式。ProGuard正是这么一个工具:

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure name.

[ Read More » ]

Android SDK Add-on Configure, Compile and Release

Android

SDK Add-on 是一个比较小众的话题,一是通常厂商不会公开自己的add-on,二是即便公开了,应用开发者也很少使用。所以通常是厂商自己的技术团队自娱自乐,框架团队抽取公用的控件,制成一个 add-on,然后公布给自家的应用程序开发团队。

由于是小众的,所以网络中关于这方面的资料比较少。这几天由于工作原因,我有幸接触到 Add-on,因此把这方面的知识进行了汇总,整理成如下内容。这些知识来自于我对 sample 示例的理解,并经过项目实践验证,我竭力保证无误,但差错之处也可能存在,如发现,请指正。

以下内容将分成若个步骤:

  1. 添加模块;
  2. 添加资源文件;
  3. 加入编译脚本;
  4. 发布;
[ Read More » ]