0

现在我正在做类似下面的事情来以root身份执行命令。但整个事情似乎有点手动,所以我搜索了一下,找到了roottools。这是推荐的方式还是有更好的方式?

我希望能够等待命令完成、读取输出和 ret val。

    public static void deleteSystemApp(Context context, String app)
    {
            final String MOUNT_RW = "mount -o remount,rw -t rfs /dev/stl5 /system; \n";
            final String MOUNT_RO = "mount -o remount,ro -t rfs /dev/stl5 /system; \n";
            final String RM_APP = "rm -rf " + app + "; \n";
            Process process;
            try
            {
                    process = Runtime.getRuntime().exec("su");
                    DataOutputStream os = new DataOutputStream(process.getOutputStream());
                    os.writeBytes(MOUNT_RW);
                    Toast.makeText(context, RM_APP, Toast.LENGTH_SHORT).show();
                    //os.writeBytes(RM_APP);
                    os.writeBytes(MOUNT_RO);
            }
            catch(IOException e)
            {
                    e.printStackTrace();
            }
    }

关于 Chris Stratton 指出的问题的更新:我已经对我的 app 参数进行了 urlencoding,以确保没有人可以通过诸如“something; rm -rf /”或“something && rm -rf /”之类的东西并擦除设备。但经过进一步考虑,我完全放弃了清理争论的想法。并删除了我的那部分代码。为什么?

  1. 为什么有人要对自己的设备执行此操作?
  2. 如果其他人能够传递恶意参数,则该设备已经受到威胁。
4

1 回答 1

2

原文说明:

RootTools 为有根开发者提供了一套标准化的工具,用于开发有根应用程序。最后,我们将通过为开发人员提供强大、易于使用的库来实现这一目标,这将大大缩短开发时间并促进代码重用。该项目对任何认为自己有贡献的成熟开发人员开放。通过共同参与,我们可以简化我们自己的流程,提高我们应用程序的效率,学习新技术,并为我们的用户提供更好的体验。

正如您可能理解的那样, RootTools 为有根开发者提供了一套标准化的工具,用于开发有根应用程序。如果您需要自己的非标准工具或修改 RootTools 的源代码。通常这个库会满足你的所有需求。我在几个项目中使用它并且对此非常满意。

祝你好运。

于 2013-09-22T09:54:56.663 回答