資源描述:
《應用程序包的安裝是android的特點》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、應用程序包的安裝是android的特點APK為AndroidPackage的縮寫Android應用安裝有如下四種方式:1.系統(tǒng)應用安裝――開機時完成,沒有安裝界面2.網(wǎng)絡下載應用安裝――通過market應用完成,沒有安裝界面3.ADB工具安裝――沒有安裝界面。4.第三方應用安裝――通過SD卡里的APK文件安裝,有安裝界面,由????????packageinstaller.apk應用處理安裝及卸載過程的界面。應用安裝的流程及路徑?應用安裝涉及到如下幾個目錄:????????system/app?-
2、--------------系統(tǒng)自帶的應用程序,獲得adb?root權限才能刪除data/app??---------------用戶程序安裝的目錄。安裝時把??????????????????????????????????????????????????????????????????????????????????????????????????????apk文件復制到此目錄data/data?---------------存放應用程序的數(shù)據(jù)data/dalvik-cache--------
3、將apk中的dex文件安裝到dalvik-cache目錄下(dex文件是dalvik虛擬機的可執(zhí)行文件,其大小約為原始apk文件大小的四分之一)安裝過程:復制APK安裝包到data/app目錄下,解壓并掃描安裝包,把dex文件(Dalvik字節(jié)碼)保存到dalvik-cache目錄,并data/data目錄下創(chuàng)建對應的應用數(shù)據(jù)目錄。卸載過程:刪除安裝過程中在上述三個目錄下創(chuàng)建的文件及目錄。安裝應用的過程解析一.開機安裝?PackageManagerService處理各種應用的安裝,卸載,管理等工作
4、,開機時由systemServer啟動此服務(源文件路徑:androidframeworksbaseservicesjavacomandroidserverPackageManagerService.java)?PackageManagerService服務啟動的流程:1.首先掃描安裝“systemframework”目錄下的jar包???????[java]viewplaincopyprint?1.//?Find?base?frameworks?(resource?packag
5、es?without?code).??2.???????????mFrameworkInstallObserver?=?new?AppDirObserver(??3.???????????????mFrameworkDir.getPath(),?OBSERVER_EVENTS,?true);??4.???????????mFrameworkInstallObserver.startWatching();??5.???????????scanDirLI(mFrameworkDir,?PackageP
6、arser.PARSE_IS_SYSTEM??6.???????????????????
7、?PackageParser.PARSE_IS_SYSTEM_DIR,??7.???????????????????scanMode?
8、?SCAN_NO_DEX,?0);??2.掃描安裝系統(tǒng)system/app的應用程序??????[java]viewplaincopyprint?1.//?Collect?all?system?packages.??2.??????????mSystemAppDir?=?ne
9、w?File(Environment.getRootDirectory(),?"app");??3.??????????mSystemInstallObserver?=?new?AppDirObserver(??4.??????????????mSystemAppDir.getPath(),?OBSERVER_EVENTS,?true);??5.??????????mSystemInstallObserver.startWatching();??6.??????????scanDirLI(mSys
10、temAppDir,?PackageParser.PARSE_IS_SYSTEM??7.??????????????????
11、?PackageParser.PARSE_IS_SYSTEM_DIR,?scanMode,?0);??3.制造商的目錄下/vendor/app應用包?????[java]viewplaincopyprint?1.//?Collect?all?vendor?packages.??2.???????????mVendorAppDir?=?new?File("/v