Apk包的內容和Android應用的許可權

來源:互聯網
上載者:User

Apk檔案是Android上的安裝檔案,一個Android安裝包包含了與該應用程式相關的所有檔案。

Apk檔案本質上是一個zip包,包括AndroidManifest.xml檔案、應用程式代碼(.dex檔案)、資源檔等。

其中AndroidManifest.xml檔案位於根目錄下,主要包括以下各個元素:

1、包名(package):若沒有指定apk的檔案名稱,編譯後程式包將以應用內Java主程式包的包名命名。

2、認證(certificate):指定應用程式所授予的信任層級,目前的認證層級包括platform(system)、shared、media以及應用自訂認證。

3、許可權組(permission-group):許可權組的定義是為了描述一組具有共同特性的許可權。

4、許可權(permission):許可權用來描述是否擁有做某件事的權力。Android系統中的許可權是分級的,分為普通層級(normal)、危險層級(dangerous),簽名層級(signature)和系統/簽名層級(signature or system)。

系統中所有預定義的許可權根據作用的不同,分別屬於不同的層級。對於normal和dangerous層級的許可權,稱之為低級許可權,應用申請即授予;其他兩級許可權,稱之為進階許可權或系統許可權,應用擁有platform層級的認證才能申請,當應用試圖在沒有許可權的情況下做受限操作時,應用將被系統殺掉以示警。

5、許可權樹(permission-tree):許可權樹的設定是為了統一管理一組許可權,聲明於該樹下的許可權所有者歸屬該應用。系統提供了API,應用可以在運行時動態添加:PackageManager.addPermission()

6、使用許可權(uses-permission):應用需要的許可權應當在此處申請,所申請的許可權應當被系統或某個應用所定義,否則視為無效申請。同時使用許可權的申請需要遵循許可權授予條件,非platform認證的應用無法申請進階許可權。

7、SDK(uses-sdk):標識本應用啟動並執行SDK版本,高相容性的應用可以忽略此項。

8、Application:Application是Android應用內最進階別(top level)的模組,每個應用內最多隻能有一個application,如果應用沒有指定該模組,一個預設的application將被啟用,application在應用啟動時最先被載入,並存活在應用的整個運行時生命週期。因此一些初始化的工作適合在本模組完成。Application元素有許多屬性,其中“persistent”表示本應用是否常駐記憶體,“enable”表示本應用當前是否應當被載入。

9、Activity:Activity是application模組運行時的子項目,標識了一個UI。一個應用可以聲明並實現零至多個其他運行時模組,包括activity,activity通過增加intent-filter來標識哪些intent可以被處理,同時intent也是調度activity的主要參數。

10、Receiver:Receiver也是application運行時的子項目,receiver通過增加intent-filter來標識他需要接受哪些intent。當收到intent後,receiver將根據不同的intent進行不同的處理。當一個intent發出後,所有註冊了該intent的receiver都將會收到,系統會根據receiver在系統中的註冊次序順序發送;當一個receiver有多個未接收的intent時,將按照intent發送的次序順序接收。

11、Service:Service也是application的運行時子項目,屬於後台模組,啟動後將長時間運行,除非停止該service或所在應用進程被殺死。

12、Provider:Provider也是application的運行時字元素,繼承與ContentProvider,是對該應用管理的使用者資料的結構化接入,是基於資料庫操作方式的封裝。如果應用允許外部應用訪問/管理它的使用者資料,provider是android平台提供的最佳方式。

13、Activity-alias:已有activity的別名。

14、Uses-library:標識應用啟動所必須的共用庫。

AndroidManifest.xml的結構大綱:

<manifest> 檔案根節點, 描述了程式包的所有內容.    <uses-permission> 請求一個安全授權, 必須被授予該許可權, 您的程式包才能正確的操作. 0~N <permission> 聲明一個安全授權, 用來限制哪些應用可以訪問您的程式包內的組件和特有機制. 0~N    <instrumentation>    <application> 描述程式包內應用層級組件的根節點. 該節點能夠描述應用程式的全域(和/或)預設屬性, 例如標籤, 表徵圖, 主題, 需要的授權, 等等.包含零個或一個這樣的節點        <activity> Activity 是應用於使用者互動的最主要機制. 當一個應用啟動並執行時候, 使用者看到的第一個螢幕就是activity, 並且, 使用者所使用的其他絕大多數螢幕(介面)也會是            <intent-filter>            <action>            <category>            <type>            <scheme>            <authority>            <path>        <receiver> 一個IntentReceiver 可以讓應用接收到一次資料變化和一次行為發生的通知, 甚至這個應用沒有在運行也可以. 同activity 標籤一樣, 你可以選擇包含一個或多個<intent-filter>元素        <service>Service 是一個在後台任意時刻都可以啟動並執行組件. 同activity 標籤一樣, 你可以選擇包含一個或多個<intent-filter>元素        <provider>ContentProvider組件是用來管理資料持久化及資料發布的, 發布的資料可以被其他的應用訪問.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.