如何Android应用技术上的升级工作? [英] How do Android app upgrades work technically?

查看:858
本文介绍了如何Android应用技术上的升级工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能解释或指出资源在那里我可以了解如何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ð软件包管理系统:意图= {意向A​​CT = 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ð软件包管理系统:意图= {意向A​​CT = 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} 237546897

Can 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆