Как защита от копирования для Android может быть проверена, если устройство укоренено?

На странице http://developer.android.com/guide/publishing/licensing.html в разделе «Замена для защиты от копирования» говорится:

Ограничение устаревшего механизма защиты от копирования на Android Market заключается в том, что приложения, использующие его, могут быть установлены только на совместимых устройствах, обеспечивающих безопасную внутреннюю среду хранения. Например, приложение, защищенное от копирования, не может быть загружено с Market на устройство, предоставляющее root-доступ, и приложение не может быть установлено на SD-карту устройства.

Как Android, тем временем, устарел – защита от копирования проверяет, укоренено ли устройство? Afaik это невозможно, также согласно Dianne Hackborn (см. Как вы можете обнаружить, если устройство внедрено в приложение? ). Таким образом, это может означать только то, что проверка выполняется с помощью некоторых (неизвестных публичных) проверки запутанных критериев, очевидно, не просто проверка того, существует ли команда su, я полагаю. Кто-нибудь знает больше об этой контрольной логике – или насколько это безопасно?

Это то, что я использую:

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», Тоже не найдет его, поэтому цель укоренения будет побеждена.

В то время как присутствие приложения Superuser не является отличным способом сказать, является ли телефон укорененным его хорошим индикатором, которым он может быть. Почему бы просто не проверить, установлен ли пакет com.noshufou.android.su ?

Я никогда не пробовал, но я не понимаю, почему это не сработает.

Мы четко указываем в информации о продажах, что приложение не работает на корневых устройствах.

Это определенно повлияет на вашу скорость установки. Хотя вы планируете продать свое приложение за 1000 долларов, это будет иметь гораздо худший эффект, чем все, что вы могли бы ему.