Android xml manifest屬性詳解

manifest extras:java


例子:android

<manifest  xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.woody.test"
    android:sharedUserId="string"
    android:sharedUserLabel="string resource"
    android:versionCode="integer"
    android:versionName="string"
    android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    
    <uses-sdk android:minSdkVersion="integer"
        android:targetSdkVersion="integer"
        android:maxSdkVersion="integer"/>
    
    <uses-configuration  android:reqFiveWayNav=["true" | "false"] 
        android:reqHardKeyboard=["true" | "false"]
        android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |   "twelvekey"]
        android:reqNavigation=["undefined" | "nonav" | "dpad" |  "trackball" | "wheel"]
        android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
    
    <uses-feature android:glEsVersion="integer"
        android:name="string"
        android:required=["true" | "false"] />
    
    <supports-screens  android:smallScreens=["true" | "false"] 
        android:normalScreens=["true" | "false"] 
        android:largeScreens=["true" | "false"] 
        android:anyDensity=["true" | "false"] />
    
</manifest>

1、manifest屬性:數據庫

一、xmlns:android
定義android命名空間,通常爲 
http://schemas.android.com/apk/res/android ,這樣使得Android中各類標準屬性能在文件中使用,提供了大部分元素中的數據。
二、package
指定本應用內java主程序包的包名,它也是一個應用進程的默認名稱
三、sharedUserId
代表數據權限,由於默認狀況下,Android給每一個APK分配一個惟一的UserID,因此是默認禁止不一樣APK訪問共享數據的。若要共享數據,第一能夠採用Share Preference方法,第二種就能夠採用sharedUserId了,將不一樣APK的sharedUserId都設爲同樣,則這些APK之間就能夠互相共享數據了。
Android給每一個APK進程分配一個單獨的用戶空間,其manifest中的userid就是對應一個Linux用戶(Android 系統是基於Linux)的.因此不一樣APK(用戶)間互相訪問數據默認是禁止的.可是它也提供了2種APK間共享數據的形式:
①. Share Preference. / Content Provider
APK能夠指定接口和數據給任何其餘APK讀取. 須要本身實現接口和Share的數據.
本文對於這個不作詳細解釋
②. 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:
api

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.demo.a1"
    android:sharedUserId="com.c">

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.demo.b1"
    android:sharedUserId="com.c">

這個"com.c" 就是user id, 而後packagename APK A就是上面的內容, APK B可能
是"com.android.demo.b1" 這個沒有限制
app

這個設定好以後, APK B就能夠像打開本地數據庫那樣 打開APK A中的數據庫了.
APK A把登錄信息存放在A的數據目錄下面. APK B每次啓動的時候讀取APK A下面的數據庫
判斷是否已經登錄:
APK B中的代碼:
ide

friendContext = this.createPackageContext("com.android.demo.a1",Context.CONTEXT_IGNORE_SECURITY);

經過A的package name 就能夠獲得A的 packagecontext
經過這個context就能夠直接打開數據庫
四、sharedUserLabel
一個共享的用戶名,它只有在設置了sharedUserId屬性的前提下才會有意義
五、versionCode
是給設備程序識別版本(升級)用的必須是一個interger值表明app更新過多少次,好比初版通常爲1,以後若要更新版本就設置爲2,3等等。。。
六、versionName
這個名稱是給用戶看的,你能夠將你的APP版本號設置爲1.1版,後續更新版本設置爲1.二、2.0版本等等。。。
七、installLocation
安裝參數,是Android2.2中的一個新特性,installLocation有三個值能夠選擇:internalOnly、auto、preferExternal
選擇preferExternal,系統會優先考慮將APK安裝到SD卡上(固然最終用戶能夠選擇爲內部ROM存儲上,若是SD存儲已滿,也會安裝到內部存儲上)
②. 選擇auto,系統將會根據存儲空間本身去適應
③. 選擇internalOnly是指必須安裝到內部才能運行

(注:須要進行後臺類監控的APP最好安裝在內部,而一些較大的遊戲APP最好安裝在SD卡上。現默認爲安裝在內部,若是把APP安裝在SD卡上,首先得設置你的level爲8,而且要配置android:installLocation這個參數的屬性爲preferExternal)
性能

2、manifest extras屬性:ui

1.uses-sdkthis

描述應用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3。spa

2.supports-screens

這是在android1.6之後的新特性,支持多屏幕機制,各屬性含義:這四個屬性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多種不一樣密度。

3.uses-configuration

描述應用所須要的硬件和軟件特性,以便防止應用在沒有這些特性的設備上安裝。

4.uses-feature

同上。

相關文章
相關標籤/搜索