如何Android应用技术上的升级工作? [英] How do Android app upgrades work technically?
问题描述
有人能解释或指出资源在那里我可以了解如何Android应用程序的升级实际上是在细节的操作系统级别的工作?
从包管理器日志,似乎以下是采取升级步骤:
1)下载软件包在临时位置。
行为= android.intent.action.PACKAGE_NEEDS_VERIFICATION
DAT =文件:///data/app/vmdl1854135520.tmp
(典型值)=应用程序/ vnd.android.package存档
块引用>2)不要包验证。
17 06-30:59:02.751 3701 3751ð软件包管理系统:[MSG]
PACKAGE_VERIFIED:观测{} 237546897
块引用>3)重命名的包。
17 06-30:59:03.361 3701 3751ð软件包管理系统:重命名
/data/app/vmdl1854135520.tmp到/data/app/com.vzw.hss.myverizon-1
块引用>4)终止现有的应用程序
17 06-30:59:03.361 3701 3751ð软件包管理系统:@killApplicatoin:
10031,更换SYS PKG
块引用>5)Dexopt的APK
17 06-30:59:03.381 3701 3751ð软件包管理系统:在运行dexopt:
/data/app/com.vzw.hss.myverizon-1/base.apk PKG = com.vzw.hss.myverizon
ISA = arm64 vmSafeMode = FALSE间pret_only = FALSE
块引用>** 06-30 17:59:02.741 3701 3751ð软件包管理系统:[校验]找到1个核查的意图意向{行动= android.intent.action.PACKAGE_NEEDS_VERIFICATION DAT =文件: ///data/app/vmdl1854135520.tmp**典型值=应用程序/ vnd.android.package归档FLG = 0x10000001} 0可选核查员
06-30 17:59:02.741 3701 3751ð软件包管理系统:[VERIFY] sendOrderedBroadcastToRequiredVerifier:
06-30 17:59:02.741 3701 3751ð软件包管理系统:PackageVerificationState {
06-30 17:59:02.741 3701 3751ð软件包管理系统:验证包= com.android.vending(10034),
06-30 17:59:02.741 3701 3751ð软件包管理系统:意图= {意向ACT = android.intent.action.PACKAGE_NEEDS_VERIFICATION DAT =文件:///data/app/vmdl1854135520.tmp典型值=应用程序/ vnd.android.package-归档FLG = 0x10000001(有临时演员)}
06-30 17:59:02.741 3701 3751ð软件包管理系统:人= 28,假的,假的,假的,假的,假的
06-30 17:59:02.741 3701 3751ð软件包管理系统:}
06-30 17:59:02.741 3701 3751ð软件包管理系统:除去10秒后MCS_UNBIND消息,并发布MCS_UNBIND
06-30 17:59:02.751 3701 3701ð软件包管理系统:[VERIFY]的onReceive为RequiredVerifier ID = 28
06-30 17:59:02.751 3701 3701ð软件包管理系统:[VERIFY]发送延迟的消息后CHECK_PENDING_VERIFICATION:10000
06-30 17:59:02.751 3701 4589ð软件包管理系统:[VERIFY] verifyPendingInstall(28 VERIFICATION_ALLOW),UID = 10034
06-30 17:59:02.751 3701 3751ð软件包管理系统:[MSG] PACKAGE_VERIFIED:观测{} 237546897
06-30 17:59:02.751 3701 3751ð软件包管理系统:[VERIFY] PACKAGE_VERIFIED:
06-30 17:59:02.751 3701 3751ð软件包管理系统:PackageVerificationState {
06-30 17:59:02.751 3701 3751ð软件包管理系统:验证包= com.android.vending(10034),
06-30 17:59:02.751 3701 3751ð软件包管理系统:意图= {意向ACT = android.intent.action.PACKAGE_NEEDS_VERIFICATION DAT =文件:///data/app/vmdl1854135520.tmp典型值=应用程序/ vnd.android.package-归档FLG = 0x10000001 CMP = com.android.vending / com.google.android.vending.verifier.PackageVerificationReceiver(有临时演员)}
06-30 17:59:02.751 3701 3751ð软件包管理系统:人= 28,假的,假的,假的,假的,假的
06-30 17:59:02.751 3701 3751ð软件包管理系统:}
06-30 17:59:02.751 3701 3751ð软件包管理系统:[VERIFY] broadcastPackageVerified(28 VERIFICATION_ALLOW,文件:///data/app/vmdl1854135520.tmp)
06-30 17:59:02.761 3701 3751ð软件包管理系统:/data/app/vmdl1854135520.tmp已经上演;跳绳副本
06-30 17:59:02.761 3701 3751ð软件包管理系统:删除MCS_UNBIND和发表MCS_UNBIND
06-30 17:59:02.761 3701 3751ð软件包管理系统:[MSG] PROCESS_PENDING_INSTALL:观测{} 237546897
06-30 17:59:02.761 3701 3751ð软件包管理系统:currentStatus {1}
06-30 17:59:02.761 3701 3751ð软件包管理系统:installPackageLI:路径
06-30 17:59:03.321 3701 3751W¯¯软件包管理系统:验证的应用程序可以安装与否
** 06-30 17:59:03.361 3701 3751ð软件包管理系统:重命名/data/app/vmdl1854135520.tmp到/data/app/com.vzw.hss.myverizon-1**
** 06-30 17:59:03.361 3701 3751ð软件包管理系统:replacePackageLI **
** 06-30 17:59:03.361 3701 3751ð软件包管理系统:@killApplicatoin:10031,更换SYS PKG **
06-30 17:59:03.371 3701 3751W¯¯软件包管理系统:试图以更新/系统系统应用code路径/私法应用/ MyVerizon到/data/app/com.vzw.hss.myverizon-1
06-30 17:59:03.371 3701 3751我软件包管理系统:scanFileNewer:com.vzw.hss.myverizon
** 06-30 17:59:03.381 3701 3751ð软件包管理系统:在运行dexopt:/data/app/com.vzw.hss.myverizon-1/base.apk PKG = com.vzw.hss.myverizon ISA = arm64 vmSafeMode = FALSE间pret_only =假**
06-30 17:59:06.861 3701 3751我软件包管理系统:做mInstaller.dexopt:0
06-30 17:59:06.861 3701 3751ð软件包管理系统:时间dexopt:3.482秒
06-30 17:59:06.861 3701 3751ð软件包管理系统:@killApplicatoin:10031,更新PKG
06-30 17:59:06.861 3701 3751W¯¯软件包管理系统:为PKG code路线:从com.vzw.hss.myverizon /系统改变/私法应用/ MyVerizon到/data/app/com.vzw.hss。 myverizon-1
06-30 17:59:06.861 3701 3751W¯¯软件包管理系统:用于PKG资源路径:从com.vzw.hss.myverizon /系统/私法应用/ MyVerizon改为/data/app/com.vzw.hss.myverizon-1
06-30 17:59:06.961 3701 3751ð软件包管理系统:安装新的程序包
06-30 17:59:06.971 3701 3751我软件包管理系统:联合国授予从包装com.samsung.mdmtest1许可android.permission.sec.ENTERPRISE_DEVICE_ADMIN(的ProtectionLevel = 2 =标志0x89be44)
06-30 17:59:06.971 3701 3751我软件包管理系统:联合国授予许可包com.samsung.mdmtest1 com.sec.enterprise.knox.permission.KNOX_ENTERPRISE_BILLING(的ProtectionLevel = 2 =标志0x89be44)
06-30 17:59:07.141 3701 3751ð软件包管理系统:doPostInstall的UID {} 10031
06-30 17:59:07.151 3701 3751ð软件包管理系统:[MSG] MCS_UNBIND
06-30 17:59:07.151 3701 3751ð软件包管理系统:[MSG] POST_INSTALL:观测{} 237546897
06-30 17:59:07.151 3701 3751ð软件包管理系统:处理后安装29
06-30 17:59:07.661 3701 3751Ð软件包管理系统:结果安装:{1} 237546897Can someone explain or point out resources where I can read how Android app upgrades actually work on an OS level of detail?
解决方案From the package manager logs,it seems following steps are taken for upgrade:
1) Download the package at temporary location.
act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl1854135520.tmp typ=application/vnd.android.package-archive
2) Do package verification.
06-30 17:59:02.751 3701 3751 D PackageManager: [MSG] PACKAGE_VERIFIED: observer{237546897}
3) Rename the package.
06-30 17:59:03.361 3701 3751 D PackageManager: Renaming /data/app/vmdl1854135520.tmp to /data/app/com.vzw.hss.myverizon-1
4) Kill existing app
06-30 17:59:03.361 3701 3751 D PackageManager: !@killApplicatoin: 10031, replace sys pkg
5) Dexopt the apk
06-30 17:59:03.381 3701 3751 D PackageManager: Running dexopt on: /data/app/com.vzw.hss.myverizon-1/base.apk pkg=com.vzw.hss.myverizon isa=arm64 vmSafeMode=false interpret_only=false
**06-30 17:59:02.741 3701 3751 D PackageManager: [VERIFY] Found 1 verifiers for intent Intent { act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl1854135520.tmp** typ=application/vnd.android.package-archive flg=0x10000001 } with 0 optional verifiers 06-30 17:59:02.741 3701 3751 D PackageManager: [VERIFY] sendOrderedBroadcastToRequiredVerifier: 06-30 17:59:02.741 3701 3751 D PackageManager: PackageVerificationState{ 06-30 17:59:02.741 3701 3751 D PackageManager: verifier packages=com.android.vending(10034), 06-30 17:59:02.741 3701 3751 D PackageManager: intent=Intent { act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl1854135520.tmp typ=application/vnd.android.package-archive flg=0x10000001 (has extras) } 06-30 17:59:02.741 3701 3751 D PackageManager: others=28, false, false, false, false, false 06-30 17:59:02.741 3701 3751 D PackageManager: } 06-30 17:59:02.741 3701 3751 D PackageManager: remove MCS_UNBIND message and Posting MCS_UNBIND 10 secs later 06-30 17:59:02.751 3701 3701 D PackageManager: [VERIFY] onReceive for RequiredVerifier id=28 06-30 17:59:02.751 3701 3701 D PackageManager: [VERIFY] send delayed message for CHECK_PENDING_VERIFICATION after : 10000 06-30 17:59:02.751 3701 4589 D PackageManager: [VERIFY] verifyPendingInstall(28, VERIFICATION_ALLOW), uid=10034 06-30 17:59:02.751 3701 3751 D PackageManager: [MSG] PACKAGE_VERIFIED: observer{237546897} 06-30 17:59:02.751 3701 3751 D PackageManager: [VERIFY] PACKAGE_VERIFIED: 06-30 17:59:02.751 3701 3751 D PackageManager: PackageVerificationState{ 06-30 17:59:02.751 3701 3751 D PackageManager: verifier packages=com.android.vending(10034), 06-30 17:59:02.751 3701 3751 D PackageManager: intent=Intent { act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl1854135520.tmp typ=application/vnd.android.package-archive flg=0x10000001 cmp=com.android.vending/com.google.android.vending.verifier.PackageVerificationReceiver (has extras) } 06-30 17:59:02.751 3701 3751 D PackageManager: others=28, false, false, false, false, false 06-30 17:59:02.751 3701 3751 D PackageManager: } 06-30 17:59:02.751 3701 3751 D PackageManager: [VERIFY] broadcastPackageVerified(28, VERIFICATION_ALLOW, file:///data/app/vmdl1854135520.tmp) 06-30 17:59:02.761 3701 3751 D PackageManager: /data/app/vmdl1854135520.tmp already staged; skipping copy 06-30 17:59:02.761 3701 3751 D PackageManager: remove MCS_UNBIND and Posting MCS_UNBIND 06-30 17:59:02.761 3701 3751 D PackageManager: [MSG] PROCESS_PENDING_INSTALL: observer{237546897} 06-30 17:59:02.761 3701 3751 D PackageManager: currentStatus{1} 06-30 17:59:02.761 3701 3751 D PackageManager: installPackageLI: path 06-30 17:59:03.321 3701 3751 W PackageManager: verifying app can be installed or not **06-30 17:59:03.361 3701 3751 D PackageManager: Renaming /data/app/vmdl1854135520.tmp to /data/app/com.vzw.hss.myverizon-1** **06-30 17:59:03.361 3701 3751 D PackageManager: replacePackageLI** **06-30 17:59:03.361 3701 3751 D PackageManager: !@killApplicatoin: 10031, replace sys pkg** 06-30 17:59:03.371 3701 3751 W PackageManager: Trying to update system app code path from /system/priv-app/MyVerizon to /data/app/com.vzw.hss.myverizon-1 06-30 17:59:03.371 3701 3751 I PackageManager: scanFileNewer : com.vzw.hss.myverizon **06-30 17:59:03.381 3701 3751 D PackageManager: Running dexopt on: /data/app/com.vzw.hss.myverizon-1/base.apk pkg=com.vzw.hss.myverizon isa=arm64 vmSafeMode=false interpret_only=false** 06-30 17:59:06.861 3701 3751 I PackageManager: do mInstaller.dexopt : 0 06-30 17:59:06.861 3701 3751 D PackageManager: Time to dexopt: 3.482 seconds 06-30 17:59:06.861 3701 3751 D PackageManager: !@killApplicatoin: 10031, update pkg 06-30 17:59:06.861 3701 3751 W PackageManager: Code path for pkg : com.vzw.hss.myverizon changing from /system/priv-app/MyVerizon to /data/app/com.vzw.hss.myverizon-1 06-30 17:59:06.861 3701 3751 W PackageManager: Resource path for pkg : com.vzw.hss.myverizon changing from /system/priv-app/MyVerizon to /data/app/com.vzw.hss.myverizon-1 06-30 17:59:06.961 3701 3751 D PackageManager: New package installed 06-30 17:59:06.971 3701 3751 I PackageManager: Un-granting permission android.permission.sec.ENTERPRISE_DEVICE_ADMIN from package com.samsung.mdmtest1 (protectionLevel=2 flags=0x89be44) 06-30 17:59:06.971 3701 3751 I PackageManager: Un-granting permission com.sec.enterprise.knox.permission.KNOX_ENTERPRISE_BILLING from package com.samsung.mdmtest1 (protectionLevel=2 flags=0x89be44) 06-30 17:59:07.141 3701 3751 D PackageManager: doPostInstall for uid{10031} 06-30 17:59:07.151 3701 3751 D PackageManager: [MSG] MCS_UNBIND 06-30 17:59:07.151 3701 3751 D PackageManager: [MSG] POST_INSTALL: observer{237546897} 06-30 17:59:07.151 3701 3751 D PackageManager: Handling post-install for 29 06-30 17:59:07.661 3701 3751 D PackageManager: result of install: 1{237546897}
这篇关于如何Android应用技术上的升级工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!