Android PackageManager基礎知識

來源:互聯網
上載者:User

標籤:

一、PackageManagerService啟動過程

    SystemServer首先啟動,建立一個ServerThread線程來啟動所有Android核心服務,其中PackageManagerService.main方法啟動了PackageManagerService。

    main方法中就是執行個體化PackageManagerService對象,並註冊到ServiceManager中。

    PackageManagerService的構造過程設計到幾個重要的操作:
    1、建立Settings對象,向其中添加SharedUser,在android資訊清單檔中定義的SharedUserId,例如android.uid.system就是在這裡定義的。Settings的構造方法中還建立了一系列的目錄和檔案,例如/data/system目錄。
        android中UID範圍:
        SYSTEM_UID = 1000;
        非系統應用10000~19999;
        隔離沙箱進程99000~99999;
    2、建立應用安裝器Installer。
    3、啟動訊息處理線程——一個名為PackageManager的HandlerThread。
    4、建立使用者管理對象UserManager。
    5、通過readPermissions()方法讀取並解析/etc/permissions下的xml檔案,包括指定UID擁有的許可權,feature標籤下的硬體資訊和系統庫的配置資訊。
    6、讀取安裝包資訊,包括以下重要檔案:
        /data/system/packages.xml 系統中安裝的Package資訊。
        /data/system/packages-stopped.xml 記錄系統中強制停止的Package資訊。
        /data/system/packages.list 儲存系統中所有非系統內建的APK資訊。
    7、監控和掃描系統包安裝目錄:
        /system/framework 系統庫
        /system/app 預設的系統應用
        /vendor/app 廠商定製的應用
    8、掃描非系統apk資訊:
        /data/app/
        /system/preloadapp/
        /data/app-private/


二、PackageManager架構
    android的PackageManager架構是一個典型的AIDL架構。代碼路徑DIR=framework/base/core/java/android/。
    IPackageManager.aidl檔案在DIR/content/pm/IPackageManager.aidl處,按照android標準的aidl處理模式,會產生一個存根IPackageManager.Stub和一個代理IPackageManager.Stub.Proxy.
    存根的具體實現就是PackageManagerService,而代理的具體實現其實是ApplicationPackageManager,PackageManager是它的父類。
    ApplicationPackageManager路徑是DIR/app/ApplicationPackageManager.java。
    PackageManager路徑是DIR/content/pm/PackageManager.java。
    在調用Context.getPackageManager()方法時,實際調用的是ContextImpl中的方法,該方法從ActivityThread中取出一個IPackageManager的代理對象,用這個代理執行個體化了ApplicationPackageManager。

Android PackageManager基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.