android是什么大家都很熟悉了,只是我估计等google用完了26个英文字母后就不开放啦,预言下而已,大家别紧张。


每次不过看那类的android书籍开篇总会有这个android系统的软件栈,在这里我们再一次看它一遍,熟悉下我们通常做那层的开发,发散考虑下那层工价比较高。


android 高级编程 android高级编程第4版_android 4高级编程--andro


库 对我们底层开发的人来说再熟悉不过了,添加HAL层驱动接口,写个android.mk编译成so,audio,sensor,display等等。而JNI也是,虽然修改添加比较少,但一旦要做比较变态的产品就需要修改了,比如车机。

Dalvik虚拟机我从没研究过,只知道所有的android硬件和系统服务的访问都是使用中间层的Dalvik来加以管理的,通过VM来承载应用程序的执行,执行文件比如

每次编译成user版本后在system/app/下应用生成的.dex文件。每次JNI都感觉跟Dalvik天堂很近了,只是没再进一步,为了工作每次也都是按照原来别人这样子模仿一下变成我们这样子就可以了。现在山寨机加让人痛恨的SP估计是在Dalvik上做文章?


android应用程序架构:

   Activity Manager和Fragment Manager 分别控制Activity和Fragment的生命周期,包括Activity桟进行管理。


   View,这个视图是用来为Activity和Fragment构建用户界面的。


   Notification Manager,叫通知管理器,它提供一种一致的和非打断性的机制来通知用户。在有些国产平台做MID开发,比较添加了蓝牙啊,3G模块啊,FM啊这写模块后就会涉及到很多切换,跟踪代码后会经常遇见它。


   Content Provider,叫内容提供器,是让应用程序可以共享数据。


   Resource Manager,叫资源管理器,支持像字符串和图形这样的非代码资源的具体化。资源文件,我们很常做,经常换东西或者去掉东西。修改某些XML等等。


  Intent ,提供一种在应用程序以及组件之间传输数据的机制。比如之前跟客户合作,要定制他们的产品,什么开机后要运行他们的程序,他们的程序不当作launcher来做,于是我们就改装系统的launcher,在开机hasFocus的判断上采用intent:

  

if(hasFocus){
          Intent intent = new Intent(Intent.ACTION_MAIN);
          intent.addCategory(Intent.CATEGORY_LAUNCHER);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          intent.setComponent(new ComponentName("包名", "类名"));
          startActivity(intent);

 这样再通过其他的修改啊就达到目的了。