Android中sharedUserId的用處
不同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。