apk安裝過程

最近的項目裏底層的東西比較少,客戶須要改上層的一些東西(apk的預裝)。java

apk是android package的縮寫,即apk安裝包。android

 

一、系統應用安裝過程:app

PackageManagerService處理各類應用的安裝、卸載和管理等工做,開機時由systemService啓動此服務。server

該文件通常存放在:frameworks/base/services/java/com/android/server/PackageManagerService.javacmd

                                frameworks/base/services/java/com/android/server/pm/PackageManagerService.javaservice

首先掃描「system/framework」目錄下的jar包遍歷

scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode | SCAN_NO_DEX, 0 )項目

 

接着掃描"system/app"下的各系統應用di

scanDir(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode, 0)文件

 

而後掃描"data/app"目錄,即用戶安裝的第三方應用

scanDirLI(mAppInstallDir, 0, scanMode, 0)

 

最後掃描"data/app-private"目錄,即安裝DRM保護的APK文件

scanDirLI(mDrmAppPrivateInstallDir, 0, scanMode | SCAN_RORWARD_LOCKED)

 

安裝應用的過程:

一、scanDir(Filedir, int flags, int scanMode) 遍歷安裝指定目錄下的文件

二、scanPackageLI(FilescanFile, File destCodeFIle, FiledestResourceFile, int parseFlags, int scanMode) 安裝package文件

三、scanPackageLI(File scanFile, FIle destCodeFile,  , , ,)經過解析安裝包parsePackage獲取到安裝包的信息結構

四、mInstaller.install(, ,) 實現文件複製的安裝過程(framework/base/cmds/installd/installd.c)

相關文章
相關標籤/搜索