首页 > 代码库 > June 26,2014---->Binder(IPC),Dalvik ,DEX/ODEX

June 26,2014---->Binder(IPC),Dalvik ,DEX/ODEX

1.Binder(IPC)

Linux进程之间要能够互相通信,从而共享资源和信息。所以,操作系统内核必须提供进程间的通信机制(IPC,Inter-Process Communication)。

IPC机制种类:采用命名管道(name pipe),消息队列(message queue),信号(signal),内存共享(share memory);

在Android终端上的应用软件的通信几乎看不到这些IPC通信方式,取而代之的是Binder方式。

Binder是通过Linux的Binder Driver 来实现的,Binder操作类似于线程迁移(Thread migration),两个进程间通信看起来就像是一个进程进入另一个进程去执行代码,然后带着执行的结果返回。SEE MORE>

  

2.Android 为什么一开始要引入 Dalvik 虚拟机机制?

Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是一个Android运行时的一部分,作用在于连接底层核心、周边库与上层应用,提供更多的自动管理功能:

SEE MORE>>

 

3.Art取代Dalvik

在Kitkat中Art模式可以在「开发者选项」中切换,但是Sony的4.4并没有添加这个选项。原因是应用需要被优化,否则面临兼容性不好的风险,而优化会延缓新系统的发布时间。

ART模式比Dalvik要快,但是也有一些缺点:

1.会增加程序占用的存储空间(不是很多)。

2.会更耗电。

不过这些也许只是暂时的。下一版本的Android会正式移除Dalvik。

 

4.DEX和ODEX的区别

ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个.odex文件单独存放,原APK中的classes.dex文件会保留。

这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。

注意:/system/app中的apk文件中没有dex文件(如下图,左边的SemcClock.apk是从系统中pull出来的),我们知道dex是Android的可执行文件(/data/data/<package name>/下面有dex,是程序第一次运行的时候生成的)。

这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的(安装提示「解析包时出现问题」)。

 

5.platform.x509.pem和platform.pk8的用处

QUOTE:

很多网友可能需要访问一些系统敏感的设置信息,如果没有Root权限如何解决呢? platform.x509.pem和platform.pk8可以让你获得系统权限,Android在系统账户安全中使用了Linux的ACL控制方式,通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId=”android.uid.system” 这样就是用了system这个uid了。 SEE MORE>>

这种方法早就听说过,用SHARE UID得到系统级权限,没试过,不知在Kitkat以及以后版本是否适用。

 

So much for today.

9:35PM