如何让我的应用成为系统应用?

发布于 2024-12-24 22:11:38 字数 620 浏览 2 评论 0原文

我想以编程方式使我的应用程序成为系统应用程序。我设法在手机上使用 root 和 busybox 完成此操作。知道如何在没有 busybox 的情况下实现这一点吗?

Runtime.getRuntime().exec(new String[] { "su", "-c", "mount -o rw,remount -t yaffs2 /system; " +
                "cp `ls /data/app/xxx*` /system/app; " +
                "rm /data/app/xxx*; " +
                "mount -o ro,remount -t yaffs2 /system; " +
                "reboot" });

除此之外,我还面临另一个问题。如果我从系统应用程序切换回我的应用程序>用户应用程序并重新启动。 Android 系统仍然将我的应用程序识别为系统应用程序,即使该应用程序已经驻留在 /data/app 中。

我使用下面的代码来检查我的应用程序是否是系统应用程序:

android.content.pm.ApplicationInfo.FLAG_SYSTEM

I want to make my app become system app programmatically. I managed to do it in my phone with root and busybox. any idea how achieve this without busybox?

Runtime.getRuntime().exec(new String[] { "su", "-c", "mount -o rw,remount -t yaffs2 /system; " +
                "cp `ls /data/app/xxx*` /system/app; " +
                "rm /data/app/xxx*; " +
                "mount -o ro,remount -t yaffs2 /system; " +
                "reboot" });

Beside this, I also faced another issue. If i switch back my app from system app > user app and reboot. Android system still recognize my app as system app even though the app already reside in /data/app.

I use code below to check whether my app is system app:

android.content.pm.ApplicationInfo.FLAG_SYSTEM

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迎风吟唱 2024-12-31 22:11:38

请参考以下代码,借助 RootTools 方法将用户应用程序 apk 移动到 root 设备中的系统应用程序 apk 中。

    PackageInfo paramPackageInfo = null;
        try {
            paramPackageInfo = this.getPackageManager().getPackageInfo(
                    this.getPackageName(), 0);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

        ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;

String str1 = "/system/app/" + localApplicationInfo.packageName
                + ".apk";
        String str2 = "busybox mv " + localApplicationInfo.sourceDir + " "
                + str1;

        RootTools.remount("/system", "rw");
        RootTools.remount("/mnt", "rw");

        CommandCapture command = new CommandCapture(0, str2,
                "busybox chmod 644 " + str1);

        try {
            RootTools.getShell(true).add(command).waitForFinish();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        } catch (RootDeniedException e) {
            e.printStackTrace();
        }

        RootTools.remount("/system", "ro");
        RootTools.remount("/mnt", "ro");

在您的应用程序中使用上述代码时,需要 Busybox 和超级用户应用程序。

Refer the below code to move user app apk into system app apk in rooting device with the help of RootTools method .

    PackageInfo paramPackageInfo = null;
        try {
            paramPackageInfo = this.getPackageManager().getPackageInfo(
                    this.getPackageName(), 0);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

        ApplicationInfo localApplicationInfo = paramPackageInfo.applicationInfo;

String str1 = "/system/app/" + localApplicationInfo.packageName
                + ".apk";
        String str2 = "busybox mv " + localApplicationInfo.sourceDir + " "
                + str1;

        RootTools.remount("/system", "rw");
        RootTools.remount("/mnt", "rw");

        CommandCapture command = new CommandCapture(0, str2,
                "busybox chmod 644 " + str1);

        try {
            RootTools.getShell(true).add(command).waitForFinish();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        } catch (RootDeniedException e) {
            e.printStackTrace();
        }

        RootTools.remount("/system", "ro");
        RootTools.remount("/mnt", "ro");

Necessary of Busybox and superuser app while use the above code in your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文