本文实例讲述了Android编程实现系统重启与关机的方法。,具体如下:
最近在做个东西,巧合碰到了sharedUserId 的问题,所以收集了一些资料,存存档备份。
安装在设备中的每一个apk文件,Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是对应一个 Linux 用户都会被分配到一个属于自己的统一的 Linux 用户 ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。
用户 ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。
通过 Shared User id 拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样.
对于一个 APK 来说,如果要使用某个共享 UID 的话,必须做三步:
1、在 Manifest 节点中增加 android:sharedUserId 属性。
2、在 Android.mk 中增加 LOCAL_CERTIFICATE 的定义。
如果增加了上面的属性但没有定义与之对应的 LOCAL_CERTIFICATE 的话,APK是安装不上去的。
提示错误是:
Package com.test.MyTest has no signatures that match those in shared user android.uid.system; ignoring!
也就是说,仅有相同签名和相同 sharedUserID 标签的两个应用程序签名都会被分配相同的用户ID。
例如所有和 media/download 相关的 APK 都使用 android.media 作为 sharedUserId 的话,那么它们必须有相同的签名 media。
3、把 APK 的源码放到 packages/apps/ 目录下,用 mm 进行编译。
举例说明一下。
系统中所有使用android.uid.system作为共享UID的APK,都会首先在manifest节点中增加:
android:sharedUserId="android.uid.system"










