每個應用的根目錄中都必須包含一個 androidmanifest.xml 檔案(且檔案名精确無誤)。 清單檔案向 android 系統提供應用的必要資訊,系統必須具有這些資訊方可運作應用的任何代碼。
此外,清單檔案還可執行以下操作:
(1)為應用的 java 軟體包命名。軟體包名稱充當應用的唯一辨別符。
(2)描述應用的各個元件,包括構成應用的 activity、服務、廣播接收器和内容提供程式。它還為實作每個元件的類命名并釋出其功能,例如它們可以處理的 intent 消息。這些聲明向 android 系統告知有關元件以及可以啟動這些元件的條件的資訊。
(3)确定托管應用元件的程序。
(4)聲明應用必須具備哪些權限才能通路 api 中受保護的部分并與其他應用互動。還聲明其他應用與該應用元件互動所需具備的權限
(5)列出 instrumentation 類,這些類可在應用運作時提供分析和其他資訊。這些聲明隻會在應用處于開發階段時出現在清單中,在應用釋出之前将移除。
(6)聲明應用所需的最低 android api 級别
(7)列出應用必須連結到的庫
以上來自android開發者中心
下面是一個androidmanifest.xml示例:
指定本應用内java主程式包的包名,它也是一個應用程序的預設名稱
表明資料權限,因為預設情況下,android給每個apk配置設定一個唯一的userid,是以是預設禁止不同apk通路共享資料的。若要共享資料,第一可以采用share preference方法,第二種就可以采用shareduserid了,将不同apk的shareduserid都設為一樣,則這些apk之間就可以互相共享資料了。
android給每個apk程序配置設定一個單獨的使用者空間,其manifest中的userid就是對應一個linux使用者(android 系統是基于linux)的.是以不同apk(使用者)間互相通路資料預設是禁止的.但是它也提供了2種apk間共享資料的形式:
1. share preference. / content provider
apk可以指定接口和資料給任何其他apk讀取. 需要自己實作接口和share的資料.
本文對于這個不做詳細解釋
2. shared user id
通過shared user id,擁有同一個user id的多個apk可以配置成運作在同一個程序中.是以預設就是可以互相通路任意資料. 也可以配置成運作成不同的程序, 同時可以通路其他apk的資料目錄下的資料庫和檔案.就像通路本程式的資料一樣.比如某個公司開發了多個android 程式, 那麼可以把資料,圖檔等資源集中放到apk a中去. 然後這個公司的所有apk都使用同一個user id, 那麼所有的資源都可以從apk a中讀取.
舉個例子:
apk a 和apk b 都是c公司的産品,那麼如果使用者從apk a中登陸成功.那麼打開apk b的時候就不用
再次登陸. 具體實作就是 a和b設定成同一個user id:
在2個apk的androidmanifest.xml 配置user id:
這個”com.c” 就是user id, 然後packagename apk a就是上面的内容, apk b可能
是”com.android.demo.b1” 這個沒有限制
這個設定好之後, apk b就可以像打開本地資料庫那樣 打開apk a中的資料庫了.
apk a把登陸資訊存放在a的資料目錄下面. apk b每次啟動的時候讀取apk a下面的資料庫
判斷是否已經登陸:
apk b中的代碼:
通過a的package name 就可以得到a的 packagecontext
通過這個context就可以直接打開資料庫
一個共享的使用者名,它隻有在設定了shareduserid屬性的前提下才會有意義
是給裝置程式識别版本(更新)用的必須是一個interger值代表app更新過多少次,比如第一版一般為1,之後若要更新版本就設定為2,3等等。。。
這個名稱是給使用者看的,你可以将你的app版本号設定為1.1版,後續更新版本設定為1.2、2.0版本等等。。。
安裝參數,是android2.2中的一個新特性,installlocation有三個值可以選擇:internalonly、auto、preferexternal
選擇preferexternal,系統會優先考慮将apk安裝到sd卡上(當然最終使用者可以選擇為内部rom存儲上,如果sd存儲已滿,也會安裝到内部存儲上)
選擇auto,系統将會根據存儲空間自己去适應
選擇internalonly是指必須安裝到内部才能運作
(注:需要進行背景類監控的app最好安裝在内部,而一些較大的遊戲app最好安裝在sd卡上。現預設為安裝在内部,如果把app安裝在sd卡上,首先得設定你的level為8,并且要配置android:installlocation這個參數的屬性為preferexternal)