什么样的手机APPjdk能覆盖安装吗?

经验29558 米
在线时间1391 小时
机型小米平板1
签到次数171
MIUI版本7.6.8
本帖最后由 fw867 于
11:01 编辑
应用安装是智能手机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作。APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
Android应用安装的流程及路径:
应用安装涉及到如下几个目录:
system/app&&& && && && & 系统自带的应用程序,无法删除data/app
& && && && && && &用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录
data/data& && && && && && & 存放应用程序的数据Data/dalvik-cache& &将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)
安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。
Android应用安装的四种方式:1.系统应用安装:开机时完成,没有安装界面
PackageManagerService处理各种应用的安装,卸载,管理等工作,开机时由systemServer启动此服务
(源文件路径:android\frameworks\base\services\java\com\android\server\PackageManagerService.java)
PackageManagerService服务启动的流程:
1. 首先扫描安装“system\framework”目录下的jar包
1. scanDirLI(mFrameworkDir,PackageParser.PARSE_IS_SYSTEM,
& && && && && && &&&scanMode | SCAN_NO_DEX);
2.第二步扫描安装“system\app”目录下的各个系统应用
scanDirLI(mSystemAppDir,PackageParser.PARSE_IS_SYSTEM, scanMode);
3.第三步扫描“data\app”目录,即用户安装的第三方应用
scanDirLI(mAppInstallDir, 0, scanMode);
4.第四步扫描& data\app-private&目录,即安装DRM保护的APK文件(目前没有遇到过此类的应用)。
scanDirLI(mDrmAppPrivateInstallDir,0, scanMode | SCAN_FORWARD_LOCKED);
安装应用的过程
1.scanDirLI(Filedir, int flags, int scanMode) 遍历安装指定目录下的文件
2.scanPackageLI(FilescanFile,
& && && && &File destCodeFile, FiledestResourceFile, int parseFlags,
& && && && &int scanMode)& && && && && & 安装package文件
3.scanPackageLI(
& && &&&File scanFile, File destCodeFile, FiledestResourceFile,
& && &&&PackageParser.Package pkg, intparseFlags, int scanMode)
通过解析安装包parsePackage获取到安装包的信息结构
4.mInstaller.install(pkgName,pkg.applicationInfo.uid,
& && && && &&&pkg.applicationInfo.uid);& &实现文件复制的安装过程
(源文件路径:frameworks\base\cmds\installd\installd.install)
2.网络下载应用安装:通过market应用完成,没有安装界面Google Market应用需要使用gmail账户登录才可以使用,选择某一应用后,开始下载安装包,此过程中,在手机的信号区有进度条提示,下载完成后,会自动调用Packagemanager的接口安装,调用接口如下:
public voidinstallPackage(final Uri packageURI, final IPackageInstallObserver observer,final int flags)
final Uri packageURI:文件下载完成后保存的路径
final IPackageInstallObserver observer:处理返回的安装结果
final int flags:安装的参数,从market上下载的应用,安装参数为-r (replace)
installPackage接口函数的安装过程:
1.public voidinstallPackage(
& && && && &final Uri packageURI, final IPackageInstallObserverobserver, final int flags,
& && && && &final String installerPackageName)
final StringinstallerPackageName:安装完成后此名称保存在settings里,一般为null,不是关键参数
2.FiletmpPackageFile = copyTempInstallFile(packageURI, res);
把apk文件复制到临时目录下的临时文件
3.private voidinstallPackageLI(Uri pPackageURI,
& && && && &int pFlags, boolean newInstall,String installerPackageName,
& && && &&&File tmpPackageFile, PackageInstalledInfo res)
解析临时文件,获取应用包名pkgName = PackageParser.parsePackageName(
& && && && && && & tmpPackageFile.getAbsolutePath(), 0);
4.判断如果带有参数INSTALL_REPLACE_EXISTING,则调用replacePackageLI(pkgName,
& && && && && && && && &tmpPackageFile,
& && && && && && && && &destFilePath,destPackageFile, destResourceFile,
& && && && && && && && &pkg, forwardLocked,newInstall, installerPackageName,
& && && && && && && && &res)
5.如果没有,则调用installNewPackageLI(pkgName,
& && && && && && && && &tmpPackageFile,
& && && && && && && && &destFilePath,destPackageFile, destResourceFile,
& && && && && && && && &pkg,forwardLocked, newInstall, installerPackageName,
& && && && && && && && &res);
6.privatePackageParser.Package scanPackageLI(
& && &&&File scanFile, File destCodeFile, FiledestResourceFile,
& && &&&PackageParser.Package pkg, intparseFlags, int scanMode)
scanPackageLI以后的流程,与开机时的应用安装流程相同。
3.ADB工具安装:没有安装界面。
Android Debug Bridge (adb) 是SDK自带的管理设备的工具,通过ADB命令行的方式也可以为手机或模拟器安装应用,其入口函数源文件为pm.java
(源文件路径:android\frameworks\base\cmds\pm\src\com\android\commands\pm\pm.java)
ADB命令行的形式为adb install &path_to_apk& ,还可以带安装参数如:&-l&&-r& &-i& &-t&
函数runInstall()中判断参数
&-l&――INSTALL_FORWARD_LOCK
&-r&——INSTALL_REPLACE_EXISTING
&-i& ——installerPackageName
&-t&——INSTALL_ALLOW_TEST
我们常用的参数为-r,表示覆盖安装手机上已安装的同名应用。从market上下载的应用,也是直接传入这个参数安装的。
runInstall与market调用同样的接口完成应用安装。
public voidinstallPackage(android.net.Uri packageURI,android.content.pm.IPackageInstallObserver observer, int flags,java.lang.String installerPackageName)
4.第三方应用安装:通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。把APK安装包保存在SD卡中,从手机里访问SD卡中的APK安装包,点击就可以启动安装界面,系统应用Packageinstaller.apk处理这种方式下的安装及卸载界面流程,如下图:
PackageInstallerActivity负责解析包,判断是否是可用的Apk文件
创建临时安装文件/data/data/com.android.packageinstaller/files/ApiDemos.apk
并启动安装确认界面startInstallConfirm,列出解析得到的该应用基本信息。如果手机上已安装有同名应用,则需要用户确认是否要替换安装。
确认安装后,启动InstallAppProgress,调用安装接口完成安装。
pm.installPackage(mPackageURI,observer, installFlags);
1. PackageManagerService.java的内部类AppDirObserver实现了监听app目录的功能:当把某个APK拖到app目录下时,可以直接调用scanPackageLI完成安装。
2.手机数据区目录“data/system/packages.xml”文件中,包含了手机上所有已安装应用的基本信息,如安装路径,申请的permission等信息。
系列教程:
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
已有&7&人评分
MIUI 因你更精彩!
精品文章^_^
MIUI 因你更精彩!
助人为乐^_^
MIUI 因你更精彩!
精品文章^_^
经验15593 米
在线时间1034 小时
版本V9.2.4.0.NCACNEK
机型小米手机6
签到次数177
MIUI版本V9.2.4.0.NCACNEK
已有&1&人评分
助人为乐^_^
经验167693 米
威望3077 米
在线时间6929 小时
机型小米MIX
签到次数298
MIUI版本8.3.8
已有&1&人评分
助人为乐^_^
欢迎关注MIUI-团支书
经验46851 米
威望666 米
在线时间2833 小时
机型小米手机2/2S
签到次数198
MIUI版本7.6.8
这个要学学的
已有&1&人评分
助人为乐^_^
有需要,请给我留言
经验61670 米
威望358 米
在线时间5759 小时
版本8.3.14
头像是我女儿
机型小米手机5
签到次数330
MIUI版本8.3.14
收藏慢慢看
已有&1&人评分
助人为乐^_^
经验20108 米
在线时间924 小时
版本8.3.14
机型小米手机5
签到次数157
MIUI版本8.3.14
前排!!!
已有&1&人评分
助人为乐^_^
经验2781 米
在线时间175 小时
版本7.11.23
积分 3108, 距离下一级还需 1892 积分
积分 3108, 距离下一级还需 1892 积分
机型小米手机6
签到次数152
MIUI版本7.11.23
已有&1&人评分
助人为乐^_^
经验20108 米
在线时间924 小时
版本8.3.14
机型小米手机5
签到次数157
MIUI版本8.3.14
有个问题,那些获取root权限即可自动安装应用的是什么原理呢
已有&1&人评分
助人为乐^_^
经验1087 米
在线时间146 小时
版本7.11.23
积分 1348, 距离下一级还需 652 积分
积分 1348, 距离下一级还需 652 积分
机型小米手机6
签到次数47
MIUI版本7.11.23
前排????
已有&1&人评分
助人为乐^_^
经验3318 米
在线时间251 小时
版本8.3.15
积分 3640, 距离下一级还需 1360 积分
积分 3640, 距离下一级还需 1360 积分
机型红米Note4X 高通版
签到次数109
MIUI版本8.3.15
个人水平低看不懂。
已有&1&人评分
MIUI 因你更精彩!
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI 7纪念勋章
优秀解答组
优秀解答组员专属勋章
MIUI五周年
MIUI五周年纪念勋章
小米平板首发纪念勋章
小米平板首发纪念勋章
小米手机3终身荣誉勋章
小米手机3终身荣誉勋章
小米手机2终身荣誉勋章
小米手机2终身荣誉勋章
MIUI三周年
MIUI三周年纪念勋章
百万壁纸评审纪念勋章
已关注极客秀微信
已关注微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
小米手机元器件合体活动勋章
小米求合体勋章
MIUI 9纪念勋章
发烧友俱乐部
发烧友俱乐部
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
MIUI 8纪念勋章
MIUI 8纪念勋章
小米六周年
小米六周年米粉节
小米商城购买纪念勋章
论坛APP购买小米商品获得
参加流量购买活动
小米手机1终身荣誉勋章
小米手机1终身荣誉勋章
MIUI6 荣誉勋章
MIUI6 荣誉勋章
MIUI V5内测元勋
MIUI V5内测元勋勋章
社区VIP贵宾专属
一周年纪念勋章
一周年纪念勋章
做出特别贡献
MIUI七周年
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号app覆盖安装的时候,会改变UID吗_百度知道
app覆盖安装的时候,会改变UID吗
我有更好的答案
不会改变UID的UID是设备的唯一标识,如果没有注册的话,标识的是你的手机或平板,覆盖安装不会有问题的。
为您推荐:
其他类似问题
覆盖安装的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。苹果手机爱思助手软件更新无法安装覆盖怎么办_百度知道
苹果手机爱思助手软件更新无法安装覆盖怎么办
我有更好的答案
8.8,但中国用户访问外国是超慢的,因此总是更新不了……解决方法有我这里有两个实测有效的,1,在设置——WIFI那里的【i】将DNS改为114?原因其实很简单,为什么App Store里的APP更新不了或者总是更新失败是吧楼主的想知道的是.114;2.8.114或8.114,那就是你可以想象一下苹果在中国的服务器已经半瘫痪状态,中国的部分用户自动连接到苹果的国外服务器,如果不行,下载一个ArkVPN
采纳率:90%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。游戏适合年龄为18岁及以上
Online Game
Mobile Game
Online Game
电脑游戏介绍
11对战平台立足电竞玩家的需求,提供服务器建主、万人房间、反作弊等极致游戏体验,端游包括:DotA ,Imba ,OMG ,Dota6V6 ,真三,澄海, 信长野望,忍者村大战,魔兽RPG, EF, Imca,金戈铁马,三国争霸2,梦塔防。
网页游戏介绍
9211网页游戏平台是致力于为玩家营造有快乐、有激情、有分享的游戏平台。平台旗下拥有丰富的网页游戏,囊括角色扮演RPG、战争策略SLG、冒险AVG等各类型的精品游戏。旗下主力游戏有《诸神黄昏》、《传奇霸业》、《天书世界》等。
11平台手机版诞生了,它是你可以带在身边的移动社区,可以随时与好友进行互动交流,可以浏览自己的游戏战绩
把精彩的比赛分享给朋友,可以寻找趣味相投的战友,相约在11平台上鏖战整晚。
热爱11平台的你一定不能错过,现在起,与快乐牵手,与11随行!
更多体验尽在11平台小游戏
手机扫码下载}

我要回帖

更多关于 ios app不能覆盖安装 的文章

更多推荐

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

点击添加站长微信