在 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 Myapp.apk

8 擦除 Dalvik Cache 并重新启动

第 2 步和第 3 步可能没用,这只是因为我注意到 Priv-app 目录对这个文件夹中的应用程序使用了这些命名方案 我在 Lineage 17.1 和 Magisk 21.4 下尝试了这种方法,但是直到我删除了 Priv-app 中新创建的文件夹后,手机才能重新启动

我也尝试过使用 Magisk Systemize(终端)模块的另一种方法,但结果是一样的(应用程序正在运行,但不是作为系统应用程序运行)

我也尝试将应用程序放入 System/app 文件夹,但结果相同

因为我从未见过在任何已发布的解释如何将应用程序转换为系统应用程序的方法中提到它,已安装的应用程序未使用平台密钥进行签名,并且清单不包括 android:sharedUserId="android. uid.system"

在此先感谢那些愿意提供帮助的人。

解决方法

在确保我没有已安装应用的用户副本(在 /data 中的某处)后,我会尝试以下操作。

首先进入 root shell。

  • adb root && adb remount

对系统应用使用 /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
  • adb 重启

不确定您如何确认该应用是否作为系统应用运行?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...