Как создавать приложения для Android с root-доступом?

Я обнаружил, что существует так много приложений, которым требуется root-доступ.

Как им удалось создать эти приложения? Где они нашли все ресурсы? Есть ли официальный документ о root-доступе? Или для этого понадобится какой-то хакерский способ?

И какие виды доступа, для которых требуется root-доступ? Является ли прокси одним из них? Я нигде не нашел документации о доступе к прокси.

=== ОБНОВЛЕНИЕ ===

Я думаю, что некоторые люди ошиблись моим вопросом. Я знаю, что телефон должен быть рутирован, чтобы получить root-доступ. но я хочу выяснить, какие службы нуждаются в корневом доступе? В некоторых я вижу беспроводную связь, в других — для очистки кеша (требуется ли root-доступ только для очистки кеша?) и других приложений. есть ли какой-нибудь список преимуществ, которые я получаю от root-доступа?


person Fugogugo    schedule 25.03.2011    source источник
comment
Я предполагаю, что у меня есть вопрос: почему вы хотите получить root-доступ? Чего вы хотите достичь? Без рута нельзя?   -  person Aleadam    schedule 25.03.2011
comment
Что ж. Мне просто интересно. когда-то я обнаружил, что нет способа сделать что-то обычным способом, и мне интересно, можно ли это сделать с помощью root-доступа. :)   -  person Fugogugo    schedule 26.03.2011


Ответы (5)


В телефоне должен быть установлен su (разумеется). Подробности здесь: http://forum.xda-developers.com/showthread.php?t=682828

И использовать его так же просто, как запустить команду su. Вот пример, который я использую для перезагрузки телефона программно (скопировано из этого ответа: Android 2.2: перезагрузите устройство программно )

try {
    Runtime.getRuntime().exec("su");
    Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
} 
person Aleadam    schedule 25.03.2011
comment
И, кстати, ответить на вопрос: а какие виды доступа требуют root-доступа? - Сначала телефон должен быть рутирован. Метод немного хакерский и зависит от модели, но в целом очень простой. Вы можете найти всю информацию, необходимую для каждого телефона, на forum.xda-developers.com. - person Aleadam; 25.03.2011
comment
какую команду я могу использовать? вся команда linux su- required? - person Fugogugo; 25.03.2011
comment
Ну обновление сделало совсем другой вопрос :) Список задач, требующих рута, сказать не могу, но точно r/w доступ к /system (как в рут эксплорере или ТиБу) или прямой доступ к устройствам в /dev или конфиги в /etc потребуют этого. Я думаю, что самый прямой ответ — позволить вам обойти ограничения Android API. Я использовал его только для самых простых вещей (приложение для управления лагфиксом для захвата, которое можно найти здесь: forum.xda-developers.com/showthread.php?t=917727 ) - person Aleadam; 25.03.2011

Должно работать на большинстве версий:

try {
    Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
} 
person Dpp    schedule 09.12.2013

Многие приложения зависят от сценария/команды оболочки с префиксом su.

Я не думаю, что есть способ запросить другой контекст или повысить привилегии в Android API.

person tamarintech    schedule 25.03.2011

Используйте эту функцию и используйте ее в любом месте вашего проекта

 public static void sudo(String... strings) {
    try {
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s + "\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Использование вышеуказанной функции и использование ее любого типа команд оболочки с пользователями root

  sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");
person sanjay    schedule 07.12.2018

Обычно корневые приложения просто используют такие команды, как «su ...», которые они не могут использовать без root-доступа. И с помощью этих команд они могут достичь всего (например, удалить системное приложение или повысить производительность вашего устройства Android)

person gyurix    schedule 20.08.2015