adb install 参数和pm install有什么不同的地方

android应用程序的安装方式与原理
四种安装方式:
1.系统应用安装――开机时完成,没有安装界面
2.网络下载应用安装――通过market应用完成,没有安装界面
3.ADB工具安装――没有安装界面。
4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。
应用安装的流程及路径&应用安装涉及到如下几个目录:&&&&&&&&
system/app&---------------系统自带的应用程序,获得adb&root权限才能删除
data/app&&---------------用户程序安装的目录。安装时把&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&apk文件复制到此目录data/data&---------------存放应用程序的数据data/dalvik-cache--------将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)
安装过程:
复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:
删除安装过程中在上述三个目录下创建的文件及目录。
安装过程详解
安装应用的过程解析
一.开机安装&PackageManagerService处理各种应用的安装,卸载,管理等工作,开机时由systemServer启动此服务
(源文件路径:android\frameworks\base\services\java\com\android\server\PackageManagerService.java)&
PackageManagerService服务启动的流程:
1.首先扫描安装&system\framework&目录下的jar包
2.扫描安装系统system/app的应用程序
3.制造商的目录下/vendor/app应用包
4.扫描&data\app&目录,即用户安装的第三方应用
5.扫描"&data\app-private"目录,即安装DRM保护的APK文件(一个受保护的歌曲或受保 护的视频是使用&DRM&保护的文件)
并且从该扫描方法中可以看出调用了scanPackageList()
private&PackageParser.Package&scanPackageList(File&scanFile,int&parseFlags,&int&scanMode,&long&currentTime)
跟踪scanPackageList()方法后发现,程序经过很多次的if&else&的筛选,最后判定可以安装后调用了&mInstaller.install
mInstaller.install()&&通过&&&&
&&LocalSocketAddress&address&=&new&LocalSocketAddress(
&&&&&&&&&&&&&&&&"installd",&LocalSocketAddress.Namespace.RESERVED);
指挥installd在C语言的文件中完成工作
PackageManagerService小节&:
1)从apk,&xml中载入pacakge信息,&存储到内部成员变量中,&用于后面的查找.&关键的方法
& & 是scanPackageList().
2)各种查询操作,&包括query&Intent操作.3)install&package和delete&package的操作.&还有后面的关键方法是installPackageList().
二、从网络上下载应用:
& 下载完成后,会自动调用Packagemanager的安装方法installPackage()& &
& &PackageManagerService类的installPackage()函数
& &其中是通过PackageHandler的实例mhandler.sendMessage(msg)把信息发给继承Handler的类HandleMessage()方法......最后终于回到了和开机安装一样的地方.与开机方式安装调用统一方法。
三、从ADB工具安装&
& &其入口函数源文件为pm.java&
& &(源文件路径:android\frameworks\base\cmds\pm\src\com\android\commands\pm\pm.java)
& &其中\system\framework\pm.jar&包管理库
& &包管理脚本&\system\bin\pm&解析
& &其中的PackageInstallObserver&obs&=&new&PackageInstallObserver();& & & & & & &
& &mPm.installPackage(Uri.fromFile(new&File(apkFilePath)),&obs,&installFlags,
&&&&&&&&&&&&&&&&&&&&installerPackageName);& &
四、从SD卡安装
& & & 系统调用PackageInstallerActivity.java(/home/zhongda/androidSRC/vortex-8inch-for-hoperun/packages/apps/PackageInstaller/src/com/android/packageinstaller)
进入这个Activity会判断信息是否有错,然后调用
&&&&&&private&void&initiateInstall()判断是否曾经有过同名包的安装,或者包已经安装
通过后执行private&void&startInstallConfirm()&点击OK按钮后经过一系列的安装
转自:http://www.eoeandroid.com/thread--1.html
阅读(...) 评论()当前位置:
→ 巧用pm命令安装或者卸载APK
本类常用软件
下载量:584212
下载量:419779
下载量:366966
下载量:365708
下载量:325899
巧用pm命令安装或者卸载APK
22:34:17&&出处:&&&人气:2593次&&&&字号:&&&&
东坡下载 & 分享互联网 Copyright(C)
www.uzzf.com All Rights Reserved! 网站备案/许可证号:鄂ICP备号-1adb install和pm install有什么不同的地方_百度知道
adb install和pm install有什么不同的地方
我有更好的答案
翻看源码发现appium使用的是adb install来安装应用的,手动执行adb install确实会弹窗度娘那里得来还有一种安装方法pm install手动尝试先把包push到手机上,再pm install,没有弹窗,可以解决问题。于是注释掉appium安装,顺手也注释掉unlock和app setting的安装。文件路径:/usr/local/lib/node_modules/appium/lib/devices/android/android.js ,如果使用的是selendroid模式,则需要注释掉selendroid.js里的相关内容//this.uninstallApp.bind(this),
//this.installAppForTest.bind(this),
//this.pushSettingsApp.bind(this),
//this.pushUnlock.bind(this),
手动写了一个package、unlock、app setting的安装方法,每次执行case集前调用一次,即解决了个别机器弹窗的问题,又避免了appium每执行一个case都要安装三个应用,提高了执行速度。
你可以去查查
为您推荐:
其他类似问题
install的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。搜索结果部分由没有更多推荐了,
不良信息举报
举报内容:
Android下am和pm命令简介
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 adb install 参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信