两条命令对比
powershell
perl
#命令A:目标写完整文件名,重命名
adb push C:\apk\AdapterService-xxxRelease.apk /system/priv-app/AdapterService/AdapterService.apk
#命令B:只写目标目录,保留原始文件名
adb push C:\apk\AdapterService-xxxRelease.apk /system/priv-app/AdapterService/
核心区别
- 命令 A:推送同时重命名文件
- 本地文件名:
VolvoAdapterService‑zeekrRelease.apk - 设备上最终文件名:
AdapterService.apk
复制过去,把名字改掉。前提:
/system/priv-app/AdapterService/文件夹必须预先存在。
- 命令 B:仅复制,文件名保持原样
- 本地文件名:
AdapterService‑xxxRelease.apk - 设备上最终文件名:
AdapterService‑xxxRelease.apk
原文件名直接拷贝进目录,不改名。
对你车载 priv‑app 的关键影响(非常重要)
/system/priv-app/<文件夹名>/ 下面,很多车载 ROM 期望 apk 文件名和文件夹名保持一致。
- 文件夹:
AdapterService - 命令 A 生成文件:
AdapterService.apk✅ 名字匹配,符合很多车载源码的习惯 - 命令 B 生成文件:
AdapterService‑xxxRelease.apk❌ 文件名很长,和文件夹不一致
风险:部分 Android 车载版本,priv‑app 下,如果 apk 文件名≠文件夹名,会出现:
- selinux 权限告警
- 系统不扫描加载这个 priv‑app 应用,装完看不到进程,不运行。
举个直观结果
执行命令 A 之后设备目录:
plaintext
bash
/system/priv-app/AdapterService/
└── AdapterService.apk
执行命令 B 之后设备目录:
plaintext
bash
/system/priv-app/AdapterService/
└── AdapterService-xxxRelease.apk
避坑要点
- adb push 不会自动创建父文件夹 ,必须先执行
mkdir -p - 目标路径如果是文件夹,末尾一定要带
/,否则 adb 会把 apk 变成一个无后缀的文件,搞坏目录。 - priv‑app 权限严格必须
644 root:root,权限错应用不会被系统拉起。 - A/B 动态分区设备,adb push 修改 system 重启后会被还原,这种场景只能用 fastboot。
简单总结
表格
| 命令 | 设备上 apk 文件名 | 适合场景 |
|---|---|---|
| 命令 A | AdapterService.apk |
✅车载 priv‑app,文件名与文件夹同名,推荐 |
| 命令 B | AdapterService‑xxxRelease.apk |
普通目录推送,不适合 priv‑app 目录,容易出现不加载问题 |
你的场景:优先选命令 A,推送同时重命名。