android应用安装流程课件.ppt

上传人(卖家):ziliao2023 文档编号:6100418 上传时间:2023-05-29 格式:PPT 页数:37 大小:2.11MB
下载 相关 举报
android应用安装流程课件.ppt_第1页
第1页 / 共37页
android应用安装流程课件.ppt_第2页
第2页 / 共37页
android应用安装流程课件.ppt_第3页
第3页 / 共37页
android应用安装流程课件.ppt_第4页
第4页 / 共37页
android应用安装流程课件.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

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

13、.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_MODULE).apkLOCAL_MODULE_CLASS:=APPSLOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE:=PRESIGNEDLOCAL_MO

14、DULE_PATH:=$(TARGET_OUT)/vendor/operator/appinclude$(BUILD_PREBUILT)2 打开文件devicemediatekcommondevice.mk将 Test 添加到 PRODUCT_PACKAGES 里面。PRODUCT_PACKAGES+=Test3 然后重新build整个工程art :DexFile_isDexOptNeeded failed to open oat file/data/dalvik-cache/arm/systempriv-appxxxxxx.apkclasses.dex for file location/s

15、ystem/priv-app/xxx/xxx.apk:Failed to open oat filename for reading:No such file or directorydex2oat:/system/bin/dex2oat-zip-fd=11-zip-location=/system/app/xxx/xxx.apk-oat-fd=12-oat-location=/data/dalvik-cache/arm/systemappxxxxxx.apkclasses.dex-instruction-set=arm-instruction-set-features=default-run

16、time-arg-Xms64m-runtime-arg-Xmx512mPackageManager:init_copy idx=0:InstallParams1339f952 file=/data/local/tmp/skpye.apk cid=nullPackageManager:mcs_boundPackageManager:startCopy UserHandle-1:InstallParams1339f952 file=/data/local/tmp/skpye.apk cid=nullPackageManager:Apk copy donePackageManager:mcs_che

17、ckackageManager:installPackageLI:path=/data/app/vmdl536406847.tmpPackageManager:Start parsing apk:nullPackageManager:Parsing done for apk:nullPackageManager:Renaming/data/app/vmdl536406847.tmp to/data/app/com.skype.rover-1PackageManager:Start installation for package:nullPackageManager:installNewPac

18、kageLI:Package39add66f com.skype.roverPackageManager:Scanning package com.skype.roverPackageManager:Want this data dir:/data/data/com.skype.roverinstalld:do_install:com.skype.rover 10100 10100 defaultPackageManager:Linking native library dir for/data/app/com.skype.rover-1installd:do_linklib:com.skyp

19、e.rover/data/app/com.skype.rover-1/lib/arm 0PackageManager:Resolved nativeLibraryRoot for com.skype.rover to root=/data/app/com.skype.rover-1/lib,isa=truePackageManager:Abis for packagecom.skype.rover are primary=armeabi secondary=nullPackageManager:Perform pre-dex opt for package:com.skype.roverPac

20、kageManager:Running dexopt on:/data/app/com.skype.rover-1/base.apk pkg=com.skype.rover isa=arm vmSafeMode=falseinstalld:do_dexopt:/data/app/com.skype.rover-1/base.apk 50100 1 com.skype.rover arm 0dex2oat:/system/bin/dex2oat-zip-fd=15-zip-location=/data/app/com.skype.rover-1/base.apk-oat-fd=16-oat-lo

21、cation=/data/dalvik-cache/arm/dataappcom.skype.rover-1base.apkclasses.dex-instruction-set=arm-instruction-set-features=default-runtime-arg-Xms64m-runtime-arg-Xmx512m-compiler-filter=interpret-onlyPackageManager:Dexopt done on:com.skype.roverPackageManager:New package installed in/data/app/com.skype.

22、rover-1PackageManager:Installation done for package:nullPackageManager:BM finishing package install for 1PackageManager:mcs_unbindPackageManager:calling disconnectService()PackageManager:Sending to user 0:act=android.intent.action.PACKAGE_ADDED dat=package:com.skype.rover flg=0 x4000000 Bundleandroi

23、d.intent.extra.UID=10100,android.intent.extra.user_handle=0ActivityManager:Broadast:Intent act=android.intent.action.PACKAGE_ADDED dat=package:com.skype.rover flg=0 x4000010(has extras)ordered=false userid=0 callerApp=nullCopyright MediaTek Inc.All rights reserved.oidserver目前我们只能做到将应用安装在如下组合中:1、关闭MT

24、K_2SDCARD_SWAP,可以将应用安装在下面两个路径上 1)手机内存(internal storage)2)手机存储(Phone storage)或者 2、开启MTK_2SDCARD_SWAP,可以将应用安装在下面两个路径上 1)手机内存(internal storage)3)外置SD卡(sd card)关于如何开启MTK_2SDCARD_SWAP以及该宏对应的功能请参考MOL上的Ecource:SD卡配置方案介绍,或者到dcc上下载对应的ppt:SD卡配置方案介绍.pptx.文档中介绍了几种配置方法,每种方法会有各自的优缺点,可以根据自己的需求选择适合自己的方案。Google 默认 P

25、ackageManager 管理安装包的机制如下(按照优先级由高到低描述,如果高优先级的条件被满足,则不继续参考较低优先级的选项):1.安装应用到SD卡,需要指定install flag:adb install s *.apk 该设置拥有最高优先级,最终安装结果以这个为准,不管下面2个的配置.2.若没有特别指定1中的install flag,将会检查 AndroidManifest.xml中android:installLocation的定义。manifest的設定細分為:android:installLocation=auto,表示先查看手机内存是否足够,如果够就安装在手机内存上,不够就安装在 T 卡上;android:installLocation=internalOnly,表示安装在手机内存上;android:installLocation=preferExternal,表示安装在 T 卡上;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(android应用安装流程课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|