关于android:第三方应用放在systempreloadapp下开机不会自动安装问题解决

10次阅读

共计 1303 个字符,预计需要花费 4 分钟才能阅读完成。

Android P 版本。
解决方案如下:

diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 4f09f6e..e6f2f19 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2652,6 +2652,14 @@ public class PackageManagerService extends IPackageManager.Stub
                     | SCAN_AS_SYSTEM,
                     0);
 
+            final File preloadAppDir = new File(Environment.getRootDirectory(), "preloadapp");
+            scanDirTracedLI(preloadAppDir,
+                    mDefParseFlags
+                    | PackageParser.PARSE_IS_SYSTEM_DIR,
+                    scanFlags
+                    | SCAN_AS_SYSTEM,
+                    0);
+
             // Collect privileged vendor packages.
             File privilegedVendorAppDir = new File(Environment.getVendorDirectory(), "priv-app");

测试如下:将 ES 文件管理器放到上面目录,下面代码批改之后,m services 后替换 services 各组件,而后重启服务,之后能看到 launcher 中存在 ES 文件管理器,且能失常应用。
/system/preloadapp/cs/es-file-explorer-4-2-6-2-1.apk

替换 services 各组件命令:
adb root
adb remount
adb push X:\system\framework\oat\arm64\services.vdex /system/framework/oat/arm64/
adb push X:\system\framework\oat\arm64\services.odex /system/framework/oat/arm64/
adb push X:\system\framework\oat\arm64\services.art /system/framework/oat/arm64/
adb push X:\system\framework\services.jar.prof /system/framework/
adb push X:\system\framework\services.jar /system/framework/
adb shell sync
adb shell stop
adb shell start

正文完
 0