Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android的軟件包管理服務PackageManagerService源碼分析

Android的軟件包管理服務PackageManagerService源碼分析

編輯:關於Android編程

Android系統下的apk程序都是通過名為PackageManagerService的包管理服務來管理的。PacketManagerService是安卓系統的一個重要服務,由SystemServer啟動,主要實現apk程序包的解析,安裝,更新,移動,卸載等服務。不管是系統apk(/system/app),還是我們手工安裝上去的,系統所有的apk都是由其管理的。

以android 4.0.4的源碼為例,android4.0.4/frameworks/base/services/java/com/android/server/SystemServer.java中的run()函數裡是SystemServer組件啟動所所有系統服務的實現流程,其中包括PackageManagerService。在該文件的112行定義了一個PackageManagerService類的一個對象。

IPackageManager pm = null; //定義了一個PackageManagerService類的一個對象

接著從163行開始到170行實現了PackageManagerService對象的構造過程,其實這裡最復雜的就是?PackageManagerService對象的構造過程,啟動過程還是比較簡單的。

pm = PackageManagerService.main(context,
                    factoryTest != SystemServer.FACTORY_TEST_OFF,
                    onlyCore);        //啟動PackageManagerService, 這個main函數的實現見當前目錄下pm/PackageManagerService.java的831行
           boolean firstBoot = false;
            //判斷PackageManagerService是否是第一次啟動           
             try {
                firstBoot = pm.isFirstBoot();
            } catch (RemoteException e) {
            }
PackageManagerService.main()這個函數裡實現了PackageManagerService的啟動和注冊的過程,代碼如下:
    public static final IPackageManager main(Context context, boolean factoryTest,
            boolean onlyCore) {
        PackageManagerService m = new PackageManagerService(context, factoryTest, onlyCore); //在這裡構造了一個PackageManagerService的對象並啟動
        ServiceManager.addService("package", m);  //將PackageManagerService注冊到ServiceManager
        return m;
    }


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved