android - Android Oreo及以上版本将应用程序变成系统应用程序的正确方法是什么?
问题描述
我尝试了几种方法将应用程序转换为系统应用程序,但即使在某些情况下我设法将应用程序安装在 /system/priv-app 内,该应用程序也没有作为系统应用程序运行,因为我可以通过检查运行命令“adb shell ps”。所以请有人告诉我我是否遗漏了什么,或者是否有一些与 Lineage 相关的限制,或者可能是 Magisk 或 TWRP 让应用程序作为系统应用程序运行?
我尝试过使用 Lineage 15.1 (Oreo) 和 Magisk 21.2,手机是三星 S5,使用 TWRP 3.5.0_9-0 作为系统恢复第一个方法是
1 将应用程序文件夹复制到内部存储
2 用不带点的短名称重命名复制的文件夹(如将 com.example.myapp 文件夹重命名为 Myapp 文件夹)
3 将 apk 从 base.apk 重命名为 Myapp.apk
4 卸载应用
5 TWRP恢复模式下挂载系统分区并将Myapp文件夹复制到system/priv-app目录下
6 chmod 755 Myapp 文件夹
7 chmod 644 我的应用程序.apk
8 擦除 Dalvik 缓存并重新启动
第 2 步和第 3 步可能没用,这只是因为我注意到 Priv-app 目录为此文件夹中的应用程序使用了这些命名方案我在 Lineage 17.1 和 Magisk 21.4 下尝试了这种方法,但后来手机无法重启,直到我删除Priv-app 中新创建的文件夹
我还尝试了另一种使用 Magisk Systemize (Terminal) 模块的方法,但结果是一样的(应用程序正在运行,但不是系统应用程序)
我也尝试将应用程序放入 System/app 文件夹,但结果是一样的
正如我从未见过在任何发布的方法中提到它来解释如何将应用程序转变为系统应用程序,安装的应用程序没有使用平台密钥签名,并且清单不包括 android:sharedUserId="android.uid.system "
在此先感谢那些愿意提供帮助的人。
解决方案
在确保我没有已安装应用程序的用户副本(在 /data 中的某个位置)之后,我会尝试以下操作。
首先进入root shell。
- adb root && adb 重新挂载
对系统应用程序使用 /system/app 路径,对特权应用程序使用 /system/priv-app。(对于 priv-app 路径,您还需要创建一个具有上述权限的 priv-app-whitelist.xml,https://source.android.com/devices/tech/config/perms-allowlist)
- adb shell mkdir -p /system/app/AppName
- adb push AppName.apk /system/app/AppName
- 亚行重启
不确定您如何确认该应用程序是否作为系统应用程序运行?
推荐阅读
- mysql - 日期 + X 天作为列的默认值
- c# - 包含二维集合中的方法
- vue.js - v-select 基于值而不是键的自动选择
- c# - 如何在Sqlkata中形成多个Join Conditions sql查询
- mysql - 大数据查询期间与 MySQL 服务器的连接丢失
- php - 更改 php.ini 中的 output_buffering 但不起作用
- java - Netbeans 不会对代码应用更改
- java - AlertDialog 出于某种原因显示全屏
- c# - 如何将简单对象映射到包含自动映射器列表的复杂对象
- android - 如何将 Seekbar 从 Service 更新为 Detail Activity