当前位置: 首页 > news >正文

【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权限。
  • 备份和恢复:在更新过程中,如果出现问题,可能需要恢复到旧版本或备份数据。
  • 兼容性:新版本的应用需要与当前设备的硬件和软件环境兼容。
http://www.lryc.cn/news/416445.html

相关文章:

  • uniapp 使用renderjs通信
  • PostgreSQL 15
  • 给本地设备搭建一个云端语音助手
  • yolov5车辆类型识别TXT数据集
  • day22(mysql数据库主从搭建)
  • 返璞归真:通过简化用例来简化用户界面01
  • 书生大模型学习笔记2 - Python
  • JavaScript三级联动jQuery写法
  • 无人机挂载抓捕网
  • 174.地下城游戏——LeetCode
  • 登录相关功能的优化【JWT令牌+拦截器+跨域】
  • 向日葵没有显示器会卡住
  • 【机器学习西瓜书学习笔记——聚类】
  • MATLAB(8)深度变化模型
  • mp3格式转换器哪个好用?汇总七款音频格式转换方法(无损转换)
  • 移行前的复盘:CodeCommit 的重要地位分析
  • Java中等题-括号生成(力扣)
  • Flink 实时数仓(八)【DWS 层搭建(二)流量域、用户域、交易域搭建】
  • gitlab-runner /var/run/docker.sock connect permission denied
  • 网络安全 - 应急响应检查表
  • AD常用PCB设计规则介绍 (详细版)
  • mysql主从服务配置
  • Redis基础总结、持久化、主从复制、哨兵模式、内存淘汰策略、缓存
  • Java与Python优劣势对比:具体例子与深入分析
  • C++内存泄漏介绍
  • C++分析红黑树
  • mysql线上查询之前要性能调优
  • GPIO输出控制之LED闪烁、LED流水灯以及蜂鸣器应用案例
  • 体系结构论文导读(三十四):Design of Reliable DNN Accelerator with Un-reliable ReRAM
  • WebStock会话