androidAPK应用安装过程以及默认安装路径_第1页
androidAPK应用安装过程以及默认安装路径_第2页
androidAPK应用安装过程以及默认安装路径_第3页
androidAPK应用安装过程以及默认安装路径_第4页
androidAPK应用安装过程以及默认安装路径_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

应用安装过程以及默认安装路径分类:一:安装过程是类似 或的文件格式。通过将文件直接传到模拟器或手机中执行即可安装。应用安装有如下四种方式系统应用安装――开机时完成,没有安装界面网络下载应用安装――通过应用完成,没有安装界面工具安装――没有安装界面。第三方应用安装――通过卡里的文件安装,有安装界面,由应用处理安装及卸载过程的界面。应用安装的流程及路径应用安装涉及到如下几个目录:系统自带的应用程序,无法删除用户程序安装的目录,有删除权限。1/27安装时把文件复制到此目录存放应用程序的数据将中的文件安装到目录下 (文件是虚拟机的可执行文件 ,其大小约为原始文件大小的四分之)安装过程:复制安装包到目录下,解压并扫描安装包,把文件 (字节码)保存到目录,并目录下创建对应的应用数据目录。卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。一、系统应用安装:处理各种应用的安装,卸载,管理等工作,开机时由启动此服务(源文件路径:\\\\\\\\)服务启动的流程:首先扫描安装“”目录下的包2/271.(,|);2.第二步扫描安装 “”目录下的各个系统应用(,);3.第三步扫描“”目录,即用户安装的第三方应用(,0,);4.第四步扫描"\"目录,即安装保护的文件(目前没有遇到过此类的应用)。(,0, |);安装应用的过程1(, , )遍历安装指定目录下的文件3/272(,,, ,) 安装文件3(, ,,,, )通过解析安装包获取到安装包的信息结构4(,); 实现文件复制的安装过程(源文件路径: )二、从上下载应用:4/27应用需要使用账户登录才可以使用,选择某一应用后,开始下载安装包,此过程中,在手机的信号区有进度条提示,下载完成后,会自动调用的接口安装,调用接口如下:( , ):文件下载完成后保存的路径:处理返回的安装结果:安装的参数,从上下载的应用,安装参数为 ()接口函数的安装过程:1(, , ,):安装完成后此名称保存在里,一般为 ,不是关键参数2=(,);把文件复制到临时目录下的临时文件5/273(,, ,)解析临时文件,获取应用包名 =((),0);4.判断如果带有参数,则调用 (,,,,,,,)5.如果没有,则调用 (,6/27,,,,,,);6(, ,,,, )以后的流程,与开机时的应用安装流程相同。三、从工具安装()是自带的管理设备的工具,通过命令行的方式也可以为手机或模拟器安装应用,其入口函数源文件为(源文件路径:\\\\\\\\\\)命令行的形式为 <>,还可以带安装参数如: """"""""7/27函数()中判断参数――""————""——我们常用的参数为, 表示覆盖安装手机上已安装的同名应用。 从上下载的应用, 也是直接传入这个参数安装的。与调用同样的接口完成应用安装。( , )四、第三方应用安装 ――通过卡里的文件安装把安装包保存在卡中,从手机里访问卡中的安装包,点击就可以启动安装界面,系统应用处理这种方式下的安装及卸载界面流程,如下图:负责解析包,判断是否是可用的文件8/27创建临时安装文件并启动安装确认界面,列出解析得到的该应用基本信息。如果手机上已安装有同名应用,则需要用户确认是否要替换安装。确认安装后,启动,调用安装接口完成安装。(,);其它:的内部类实现了监听目录的功能:当把某个拖到目录下时,可以直接调用完成安装。2.手机数据区目录 “”文件中,包含了手机上所有已安装应用的基本信息,如安装路径,申请的等信息。二:更改默认安装路径如果你是一个应用开发者,没用系统全套代码,你只想更改你的的默认安装路径的话,可以按下面方法来更改:在文件标签中添加属性这个属性设置的是默认安装位置,共有三个有效值,、、对应表表示自动,由系统决定安装位置,如果系统手机内存足够,默认安装在手机内存里,如果手机内在不够,则会安装在T卡内安装在手机内存安装在外部存储中012 , .<""""9/27"""1""1.0" >如果你是一个手机方案开发者 ,能改层的代码 ,你希望下载到手机里的都默认优先安装到 T卡的话,可以按下面方法更改 :在文件里,将 这个值,改为,就可以了.默认下载就会下到 T卡里卡不存在或者满了时 ,才会下到手机内部.或者如果在应用的里,指定了属性为手机内部存储的话,是会存在手机内部的.没指这定的话这个值指定什么,就下到哪里安装在T卡里的应用,有几个缺点:因为装载T卡是在系统启动完成后,才开始装载的.所以如果应用装在T卡里的话,那么它是收不到开机启动完成的这个广播的2:如果T卡损坏或者 T卡拨出来了,那么装在 T卡里的应用是启动不了的 .系统应用安装的详细过程 ,老罗有篇文章写得很透彻 ,这里引用下:系统在启动的过程中, 会启动一个应用程序管理服务, 这个服务负责扫描系统中特定的目录, 找到里面的应用程序文件, 即以为后缀的文件, 然后对这些文件进解析, 得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程。应用程序管理服务安装应用程序的过程, 其实就是解析析应用程序配置文件的过程, 并从里面得到得到应用程序的相关信息, 例如得到应用程序的组件、 、和等信息,有了这些信息后,通过这个服务,我们就可以在系统中正常地使用这些应用程序了。应用程序管理服务是系统启动的时候由组件启动的,启后它就会执行应用程序安装的过程,因此,本文将从启动服务的过程开始分析系统中的应用程序安装的过程。应用程序管理服务从启动到安装应用程序的过程如下图所示:10/27下面我们具体分析每一个步骤。1.这个函数定义在文件中:[]1.{11/273.......4.1([]);......([]){......1();......}17. ......18. }组件是由进程负责启动的,启动的时候就会调用它的函数,这个函数主要调用了方法 1来做一些系统初始化的工作。2.1这个函数是一个方法,实现在 文件中:[]{"C"();1(*,){();}9./**.*/[]={/*,,*/15. { "1", "([;)V" ,(*)1},};(*){20. (, "",,());12/27}24. };这个函数很简单,只是调用了函数来进一步执行操作。3.函数实现在库中,源代码位于文件中:[]"C"(){3.("()");4.<>(());<>=();8.(":\n",());9.<>=();>()->(,(),0);[];14.("",,"1");15.((,"1")0){16.();}19.20.();,'t24. ,(>()){26.27.();29.30.();();13/2736.();}..'s(),.46.(":.\n");47.*=();50.(":.\n");51.>("","2");52.53.,54..,55..(>()){57. ( ": .\n" );()->();()->();60. ( ": .\n" );};}这个函数首先会初始化、、、、和这几个服务,然后就通过系统全局唯一的实例变量的来调用的2函数了。关于这个实例变量的相关资料,可能参考前面一篇文章 应用程序进程启动过程的源代码分析一文。4.这个函数定义在文件中:[]/*2. *a .*/(*,*){*;14/27;;=();();=(,);(){16. ( ": ''\n" ,);;}19. =>(,, "()V" );(){21. ( ": \n" ,,);;}>(,);;}这个函数调用由参数指定的类的静态成员函数, 这个静态成员函数是由参数指定的。 上面传进来的参数的值为 "",而参数的值为 "2",因此,接下来就会调用类的 2函数了。5.2这个函数定义在文件中:[]1.{3. ......4.2(){6. (, " !" );=();8. ( "");();}}15/27这个函数创建了一个线程,服务就是这个线程中启动的了。这里调用了实例的函数之后,下面就会执行这个实例的函数了。6.这个函数定义在文件中:[]{2. ......3.4.(){......=;.........{14.......15.16.(,"");=(,18.);19.20.......}(e){22. ( "", " " ,e);}24.25.......}......29. }这个函数除了启动服务之外, 还启动了其它很多的服务, 例如在前面学习和的几篇文章中经常看到的服务,有兴趣的读者可以自己研究一下。7.这个函数定义在文件中:[]{16/272. ......3.(,){m=(,);6. ( "",m);m;}9.10. ......11. }这个函数创建了一个服务实例, 然后把这个服务添加到中去, 是系统进程间通信机制的守护进程,负责管理系统中的对象,具体可以参考 浅谈 成为进程间通信()机制守护进程之路 一文。在创建这个服务实例时,会在类的构造函数中开始执行安装应用程序的过程:[]{2.......3.(,){......6.(){8.(){9.......10.11.=();12.=(,"");13.=(,"");14.=(,"");15.16.......17.18.=((),"");19.=(,"");20.21.......22.23.().24.=(25.(),,);26.();27.(,17/2728.|,29.|,0);30.31..32.=((),"");33.=(34.(),,);35.();36.(,37.|,,0);38.39..40.=("");41.=(42.(),,);43.();44.(,45.|,,0);46.47.48.=(49.(),,);50.();51.(,0,,0);52.53.=(54.(),,);55.();56.(,,57.,0);58.59.......}}}63.64.......65.}这里会调用函数来扫描移动设备上的下面这五个目录中的文件:18/278.这个函数定义在文件中:[]{2.......3.(,,,){[]=();......i;9. ( 0;i<;){=(,[i]);(([i])){12.'s13.;}=(,16.,,);17.'t.18.((&)019.){20.21.(,""+);22.();}}}26.27.28.......29.}对于目录中的每一个文件,如果是以后作为后缀名,那么就调用函数来对它进行解析和安装。9.这个函数定义在文件中:[]{19/272.......3.(,5.,,){6.......7.=();;=();11.12.......13.=(,,,);16.17.......18.(,,|,);}21.22.......23.}这个函数首先会为这个文件创建一个实例, 接着调用这个实例的函数来对这个文件进行解析。这个函数最后还会调用另外一个版本的函数把来解析后得到的应用程序信息保存在中。10.这个函数定义在文件中:[]{2.......3.(,,5.,){6.......7.=();......=;=;=;{20/27=();=();18.(0){19.=(,"");20.=;}{......}}(e){......}......30. []=[ 1];=;=;{34. : .=(,,);=(,,,);}(e){38. ......}40.41.......42.();();=;=;49. =;50. =;=;;}......57. }21/27每一个文件都是一个归档文件, 它里面包含了应用程序的配置文件, 这里主要就是要对这个配置文件就行解析了, 从归档文件中得到这个配置文件后, 就调用另一外版本的函数对这个应用程序进行解析了:[]{2.......3.(5.,,,[])6.,{7.......8.=(,,,);10.11.......12.=();......;......=(,);24.......25.((())(()>)){28.(){29.;30.}31.32.=();33.(("")){34.......35.36.((,,,,,)){37.;38.}39.}(("")){22/2740.......41.}(("")){42.......43.}(("")){44.......45.}(("")){46.......47.}(("")){48.......49.}(("")){50.......51.}(("")){52.......53.}(("")){54.......55.}(("")){56.......57.}(("")){58.......59.}(("")){60.......61.}(("")){62.......63.}(("")){64.......65.}(("")){66.......67.}(("")){68.......69.}(){70.......71.}{72.......73.}}......;}81. ......82. }23/27这里就是对文件中的各个标签进行解析了, 各个标签的含义可以参考官方文档, 这里我们只简单看一下标签的解析,这是通过调用函数来进行的。11.这个函数定义在文件中:[]{2.......3.(,,5.,,,[])6.,{=;=;=(,);......14.;((())(()>)){18.(){19.;20.}21.22.=();23.(("")){24.a=(,,,,,,);25.......26.27.(a);28.29.}(("")){30.a=(,,,,,,);31.......32.33.(a);34.}(("")){35.s=(,,,,,);36.......37.38.(s);24/2739.}(("")){40.p=(,,,,,);41.......42.43.(p);44.}(("")){45.a=(,,,,,);46.......47.48.(a);49.}(()("")){50.......51.}(("")){52.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论