【Android】系统级应用升级后的安装位置

系统级应用的安装位置一般在codePath=/system 下面,

如果手动的去进行adb install覆盖安装,通过dumpsys package可以发现是安装在/data/app/里,

如果是通过标准的系统升级方式呢?

这里我们来通过升级查看一下,

升级前

Package [com.test.android.test] (51fa7a7):

userId=10053

pkg=Package{5b97454 com.test.android.test}

codePath=/system/priv-app/testService

resourcePath=/system/priv-app/testService

versionName=3.1

升级后

Package [com.test.android.test] (51fa7a7):

userId=10053

pkg=Package{5b97454 com.test.android.test}

codePath=/system/priv-app/testService

resourcePath=/system/priv-app/testService

versionName=3.2

说明和手动安装的情况不一样。是会覆盖安装到/system/priv-app里的

在Android中,系统级应用通常是预装在设备上的,并且通常位于/system/app目录中。这些应用通常是由设备制造商提供的,并且它们的更新方式可能会根据设备的具体配置和Android版本的不同而有所差异。下面是一些常见的更新机制:

系统内置应用更新机制

  1. 版本控制

    • Android系统为每个应用在AndroidManifest.xml文件中提供了versionNameversionCode两个属性,用于标识应用的版本信息。
    • 更新时,系统会检查新版本的versionCode是否高于已安装版本的versionCode,以确定是否需要更新。
  2. 静默更新

    • 静默更新通常指的是不需要用户干预的后台更新过程。这种更新通常发生在系统应用上,尤其是对于OEM定制的应用。
    • 为了实现静默更新,新的应用版本会被安装到/data/app目录中,而旧版本保留在/system/app目录内。如果新版本的versionCode低于旧版本,系统会在下次重启时恢复旧版本。

更新渠道

  1. OTA (Over-the-Air) 更新

    • 这是最常见的系统级应用更新方式之一,通过网络自动下载更新包,并在后台安装。
    • 用户通常可以在设置中的"软件更新"或"系统更新"部分检查并安装可用的更新。
  2. 通过Google Play商店

    • 对于那些可以从Google Play商店获取更新的应用,用户可以在Play商店中手动更新或设置自动更新。
    • 注意,并非所有的系统级应用都可以通过Play商店进行更新,这取决于设备制造商和运营商的策略。
  3. ADB命令行工具

    • 对于开发者来说,可以使用ADB工具来更新系统级应用。这通常涉及到将新的APK文件推送到设备,并使用pm installpm install-replace命令进行安装或替换。
    • 使用这种方法更新应用通常要求设备已经解锁或者具有特殊权限。
  4. 内置系统服务

    • Android系统中有一个名为PackageManagerService的服务,它负责管理设备上的所有应用,包括更新和安装。
    • scanPackageLI函数是PackageManagerService的一部分,它负责扫描新的APK文件并检查是否需要进行更新。

注意事项

  • 权限限制:由于系统级应用通常位于受保护的分区,因此更新这类应用可能需要特殊的权限,比如root权限。
  • 备份和恢复:在更新过程中,如果出现问题,可能需要恢复到旧版本或备份数据。
  • 兼容性:新版本的应用需要与当前设备的硬件和软件环境兼容。
相关推荐
花开月满西楼26 分钟前
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
android·前端·android studio
这儿有一堆花29 分钟前
打造你的 Android 图像编辑器:深入解析 PhotoEditor 开源库
android·开源
皮皮高2 小时前
itvbox绿豆影视tvbox手机版影视APP源码分享搭建教程
android·前端·后端·开源·tv
EnzoRay2 小时前
MotionEvent
android
玲小珑2 小时前
Auto.js 入门指南(七)定时任务调度
android·前端
墨狂之逸才3 小时前
adb常用命令调试
android
YoungForYou3 小时前
Android端部署NCNN
android
移动开发者1号3 小时前
Jetpack Compose瀑布流实现方案
android·kotlin
移动开发者1号3 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·kotlin
移动开发者1号3 小时前
ListView与RecyclerView区别总结
android·kotlin