android应用安装流程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《android应用安装流程课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 应用 安装 流程 课件
- 资源描述:
-
1、CONFIDENTIAL B/system/etc/permissions/platform.xml&xxx,xml 加载系统feature,并为核心系统进程分配默认权限/data/system/packages.list 和packages.xml 系统中所有应用程序的安装信息/system/framework/system/app/data/dalvik-cachedex文件存放路径/data/data普通程序数据应用程序层PMS服务层程序文件层/data/system/users/userId/package-restrictions.xml Multi-User中记录各自enable和
2、disable的component/system/priv-app/system/vendor/operator/app/data/app在SystemServer中启动PackageManagerService.mainnew PackageManagerService()并添加到ServiceManager中new installer(建立installer和installd的socket连接,最终在底层实现install,remove,dexopt等功能)创建PackageHandler Message Looper(安装/卸载请求)通过systemConfig获取到xml文件中信息re
3、adPLW()(读取data/system/packages.xml)检查/system/etc/permissions/platform.xml中定制的library及/system/framework下的jar档案是否需要dex提取进行优化。若需要优化,会调用installer.dexopt提取dex到/data/dalvik-cache中调用scanDirLI扫描存放apk的各个目录系统应用安装通过scanPackageLI逐一解析AndroidManifest.xml文件,建立每个apk的配置结构,并将apk配置信息添加到全局列表进行管理。调用writeLPr()从全局列表中将apk信
4、息写到packages.xml和packages.list中。手机内存手机内存Sdcarddata/data下的数据目录data/data下的数据目录data/dalvik-cache下的dex文件data/dalvik-cache下的dex文件data/app/目录下对应的apkstorage/sdcard/目录下对应的包信息For system app,卸载的是updated system app,还原回原始system app.是否有Install flag?Install flag的值是什么?是“INSTALL_INTERNAL”:只能安装在手机内存上“INSTALL_EXTERNAL
5、”:只能安装在外部存储上AndroidManifest.xmlinstallLocation?否无定义,安装在手机内存Auto若手机内存空间足够,则apk安装在手机内存;若手机内存空间不够则安装在外部存储上“perferExternal”:表明安装到外部存储上“internalOnly”:只能安装到手机内存上n非MP6不建议开1)在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例2)将 Test APK的Source code 拷贝到 Test 文件夹下,删除/bin 和/gen 目录3)在 Test 目录下创建一个名为 An
6、droid.mk的文件,内容如下:LOCAL_PATH:=$(call my-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=optionalLOCAL_SRC_FILES:=$(call all-subdir-java-files)LOCAL_PACKAGE_NAME:=Testinclude$(BUILD_PACKAGE)4)打开文件 devicemediatekcommondevice.mk将 Test 添加到 PRODUCT_PACKAGES 里面。PRODUCT_PACKAGES+=Test 5)重新 build 整个工程1)在 packages
7、/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例2)将 Test.apk 放到 packages/apps/Test 下面3)在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:LOCAL_PATH:=$(call my-dir)include$(CLEAR_VARS)#Module name should match apk name to be installedLOCAL_MODULE:=TestLOCAL_MODULE_TAGS:=optionalLOCAL_SRC_FILES:=$(LOCAL_MODUL
8、E).apkLOCAL_MODULE_CLASS:=APPSLOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_PREBUILT_JNI_LIBS:=lib/armeabi/libtest.so lib/armeabi/libtest2.so lib/armeabi-v8aLOCAL_CERTIFICATE:=PRESIGNEDinclude$(BUILD_PREBUILT)若无so,删除LOCAL_PREBUILT_JNI_LIBS若有so,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用不要
9、忘记使用。标识符会将apk中的so抽离出来build进system/lib或者system/lib64中4)打开文件 devicemediatekcommondevice.mk 将 Test 添加到 PRODUCT_PACKAGES 里面。PRODUCT_PACKAGES+=Test 5)重新 build 整个工程注:如果App使用System Level的permission,需要預置到/system/priv-app底下(原在/system/app)。修改Android.mk,增加LOCAL_PRIVILEGED_MODULE:=true,以声明app需要放在/system/priv-ap
10、p下。1)在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例2)将 Test.apk 放到 packages/apps/Test 下面3)在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:LOCAL_PATH:=$(call my-dir)include$(CLEAR_VARS)#Module name should match apk name to be installedLOCAL_MODULE:=TestLOCAL_MODULE_TAGS:=optionalLOCAL_SRC_FILES
11、:=$(LOCAL_MODULE).apkLOCAL_MODULE_CLASS:=APPSLOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)#LOCAL_PRIVILEGED_MODULE:=trueLOCAL_MODULE_PATH:=$(TARGET_OUT_DATA_APPS)LOCAL_CERTIFICATE:=PRESIGNEDinclude$(BUILD_PREBUILT)4)打开文件 devicemediatekcommondevice.mk 将 Test 添加到 PRODUCT_PACKAGES 里面。PRODUCT_PA
12、CKAGES+=Test 5)重新 build 整个工程注意:这个比不能卸载的多了一句LOCAL_MODULE_PATH:=$(TARGET_OUT_DATA_APPS)1在 vendormediatekproprietarybinary3rd-partyfree下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例2 将Test.apk 放入vendormediatekproprietarybinary3rd-partyfreeTest下面3 在vendormediatekproprietarybinary3rd-partyfreeTest 下面创建文件 Android
展开阅读全文