android9及以上如何自行更新系统app
How to update the system app by itself with android 9 and above
我有一台具有根访问权限的设备。这是一个系统应用程序,具有允许系统应用程序自行更新的功能。它在 Android 4 上工作,但在 Android 9 上失败。新的 apk 文件可以正确复制到 /system/app/ 文件夹,但重启后不会更新应用程序。这是我的代码:
final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";
final String[] commands = new String[]{
libs + "mount -o rw,remount /",
libs + "cp -rf " + StorageUtil.getInstance().getRootDir() + "/app.apk /system/app/",
libs + "chmod 644 /system/app/app.apk",
libs + "mount -o ro,remount /",
};
RootUtil.executeAsRoot(commands);
好的,我已经解决了这个问题。首先,您需要替换要更新的应用程序的apk文件。因此,路径应该是 /system/app/{AppName}/{AppName}.apk。然后,您需要先删除原始 apk。之后,您可以替换新的 apk 文件。有一点,你需要保持 /system/app/{AppName} 文件夹和 /system/app/{AppName}/{AppName}.apk 文件与 [=13] 下的其他文件保持相同的权限=] 文件夹。现在,您可以重新启动设备以使用新版本的应用程序。这是代码的新版本:
final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";
final String[] commands = new String[]{
libs + "mount -o rw,remount /",
libs + "chmod 666 /system/app/{AppName}/{AppName}.apk",
libs + "rm /system/app/{AppName}/{AppName}.apk",
libs + "cp -rf " + "{AppPath}{AppName}.apk" /system/app/{AppName}/",
libs + "chmod 644 /system/app/{AppName}/{AppName}.apk",
libs + "chmod 755 /system/app/{AppName}/",
libs + "mount -o ro,remount /",
};
我有一台具有根访问权限的设备。这是一个系统应用程序,具有允许系统应用程序自行更新的功能。它在 Android 4 上工作,但在 Android 9 上失败。新的 apk 文件可以正确复制到 /system/app/ 文件夹,但重启后不会更新应用程序。这是我的代码:
final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";
final String[] commands = new String[]{
libs + "mount -o rw,remount /",
libs + "cp -rf " + StorageUtil.getInstance().getRootDir() + "/app.apk /system/app/",
libs + "chmod 644 /system/app/app.apk",
libs + "mount -o ro,remount /",
};
RootUtil.executeAsRoot(commands);
好的,我已经解决了这个问题。首先,您需要替换要更新的应用程序的apk文件。因此,路径应该是 /system/app/{AppName}/{AppName}.apk。然后,您需要先删除原始 apk。之后,您可以替换新的 apk 文件。有一点,你需要保持 /system/app/{AppName} 文件夹和 /system/app/{AppName}/{AppName}.apk 文件与 [=13] 下的其他文件保持相同的权限=] 文件夹。现在,您可以重新启动设备以使用新版本的应用程序。这是代码的新版本:
final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";
final String[] commands = new String[]{
libs + "mount -o rw,remount /",
libs + "chmod 666 /system/app/{AppName}/{AppName}.apk",
libs + "rm /system/app/{AppName}/{AppName}.apk",
libs + "cp -rf " + "{AppPath}{AppName}.apk" /system/app/{AppName}/",
libs + "chmod 644 /system/app/{AppName}/{AppName}.apk",
libs + "chmod 755 /system/app/{AppName}/",
libs + "mount -o ro,remount /",
};