4

http://developer.android.com/guide/publishing/licensing.html上,在“替换复制保护”部分下它说:

Android Market 上旧版复制保护机制的一个限制是,使用它的应用程序只能安装在提供安全内部存储环境的兼容设备上。例如,受版权保护的应用程序无法从 Market 下载到提供 root 访问权限的设备,并且该应用程序无法安装到设备的 SD 卡中。

Android - 同时已弃用 - 复制保护如何检查设备是否已植根?根据 Dianne Hackborn 的说法,这是不可能的(请参阅如何检测设备是否植根于应用程序?)。所以这只能意味着,检查是由一些(公众不知道的)混淆标准检查完成的,显然不仅仅是简单的检查“su”命令是否存在,我想。有没有人知道更多关于这个检查逻辑 - 或者它有多安全?

4

3 回答 3

2

这就是我使用的:

public static boolean isDeviceRooted () {
    boolean ret = false;
    String path = null;
    Map<String,String> env = System.getenv();

    if (env != null && (path = env.get("PATH")) != null) {
        setDevicePath(path);
        String [] dirs = path.split(":");
        for (String dir : dirs){
            String suPath = dir + "/" + "su";
            File suFile = new File(suPath);
            if (suFile != null && suFile.exists()) {
                setSuLocation(suPath);
                ret = true;
            }
        }
    }
    return ret;
}

从理论上讲,它不会在所有情况下都有效,因为用户可以将“su”放置到不在 PATH 中的非标准位置,但实际上如果他这样做了,其他需要知道“su”在哪里的应用程序is 也不会找到它,因此生根的目的将被破坏。

于 2012-01-16T20:42:35.273 回答
0

我们会在销售信息中明确说明该应用程序不能在有根设备上运行。

这肯定会影响您的安装率。尽管您计划以 1000 美元的价格出售您的应用程序,但这将产生比其他任何事情都更糟糕的效果。

于 2012-01-07T21:43:34.990 回答
0

虽然超级用户应用程序的存在并不是判断手机是否已植根的完美方法,但它可能是一个很好的指标。为什么不检查是否com.noshufou.android.su安装了软件包?

我从未尝试过,但我不明白为什么它不起作用。

于 2011-10-11T13:59:29.997 回答