zoukankan      html  css  js  c++  java
  • apk安装过程

    最近的项目里底层的东西比较少,客户需要改上层的一些东西(apk的预装)。

    apk是android package的缩写,即apk安装包。

    1、系统应用安装过程:

    PackageManagerService处理各种应用的安装、卸载和管理等工作,开机时由systemService启动此服务。

    该文件一般存放在:frameworks/base/services/java/com/android/server/PackageManagerService.java

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

    首先扫描“system/framework”目录下的jar包

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

    接着扫描"system/app"下的各系统应用

    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)

    安装应用的过程:

    1、scanDir(Filedir, int flags, int scanMode) 遍历安装指定目录下的文件

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

    3、scanPackageLI(File scanFile, FIle destCodeFile,  , , ,)通过解析安装包parsePackage获取到安装包的信息结构

    4、mInstaller.install(, ,) 实现文件复制的安装过程(framework/base/cmds/installd/installd.c)

  • 相关阅读:
    scp命令详解
    linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
    详解代理自动配置 PAC
    linux卸载
    VMware里克隆出来的CentOS Linux device eth0 does not seem to be present, delaying initialization
    CentOS系统更换软件安装源yum
    kali开启禁止或删除ssh 开机启动
    7天玩转 ASP.NET MVC
    C#高级编程42章 MVC
    C#高级编程(32章)ADO.net
  • 原文地址:https://www.cnblogs.com/zhou2011/p/3284850.html
Copyright © 2011-2022 走看看