Android中sharedUserId的用处

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012041204/article/details/80256030

不同APK之间如何互相访问数据?

Android为我们提供了两种数据互访的方法:
(1) 使用Share Preference(设置为共有)或Content Provider
APK通过指定接口和数据供其它APK读取,开发者需要实现接口和指定share的数据
(2)在配置文件AndroidManifest.xml中配置相同的UserId
通过共享userid,拥有相同userid的用户可以配置成运行在同一进程当中,因此默认就是可以互相访问任意数据的
也可以配置为不同进程当中,彼此之间就像访问自己的数据一样访问彼此的数据库和文件。

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的定义。(或者进行手动签名)

—————————————————————————————————————————————————————
系统中所有使用android.uid.system作为共享UID的APK,都会首先在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.system”,然后在Android.mk中增加LOCAL_CERTIFICATE := platform。

系统中所有使用android.uid.shared作为共享UID的APK,都会在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.shared”,然后在Android.mk中增加LOCAL_CERTIFICATE := shared。

系统中所有使用android.media作为共享UID的APK,都会在AndroidManifest.xml节点中增加android:sharedUserId=”android.media”,然后在Android.mk中增加LOCAL_CERTIFICATE := media。

猜你喜欢

转载自blog.csdn.net/u012041204/article/details/80256030