Jak Mogę uzyskać uprawnienia roota za pośrednictwem Android SDK?

Uczę się programowania na Androida i chcę stworzyć aplikację, która musi działać jako root. Logiczną rzeczą byłoby dodanie uprawnień roota w manifeście Androida.

Widziałem ten link w dokumentacji, a szczególnie zauważyłem pozwolenie FACTORY_TEST :

public static final String FACTORY_TEST

Od: API Level 1

Uruchom jako test producenta aplikacja, działająca jako użytkownik root. Dostępne tylko wtedy, gdy urządzenie jest uruchamianie w manufacturer tryb testowy. Wartość Stała: "android.pozwolenie.FACTORY_TEST "

To najlepszy sposób?

Jeśli nie jest to możliwe przy użyciu SDK, jak Mogę sprawić, że aplikacja "root" będzie działać?

Author: Jason Plank, 2011-03-14

3 answers

To co musisz zrobić to coś w stylu:

Process root = Runtime.getRuntime().exec("su");

To powoduje wyświetlenie superużytkownika, co pozwala zezwolić lub zablokować dostęp roota. Takie podejście może nie działać, jeśli użytkownik nie jest zakorzeniony. tutaj jest sposób, aby go przetestować.

 29
Author: Mohit Deshpande,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-14 01:11:57

Najpierw pozwól nam zrozumieć podstawy. Android uruchom jądro Linuksa pod spodem. Teraz, jeśli musisz uruchomić na nim swój proces z uprawnieniami super user (uruchom go jako root), jedynym sposobem jest wykonanie procesu przez command line, ponieważ jest to jedyny sposób, w jaki możesz bezpośrednio współdziałać z jądrem. Ponadto musisz użyć su przed uruchomieniem jakiegokolwiek polecenia. Jak również Chris wspomniał w swoim komentarzu do pierwszej odpowiedzi

Process process = Runtime.getRuntime().exec("su");
Prawie nic nie osiągnie. Będzie po prostu poprosić o przywilej super użytkowania korzystanie z okna dialogowego. To, co możesz zrobić, to zamiast po prostu wykonywać su, możesz wykonać swój proces za pomocą su w następujący sposób
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});

Opcja -c

Jedną z najczęściej używanych opcji su jest -c, która mówi su to execute the command that directly follows it on the same line. Takie polecenie jest wykonywane jako nowy użytkownik, a następnie okno terminala lub konsola, z której zostało uruchomione su natychmiast powraca do konta poprzedniego użytkownika po zakończeniu wykonywania polecenia lub po uruchomieniu dowolnego programu zamknięte.( więcej szczegółów )

Alternatywna Opcja

Alternatywą dla powyższej metody jest użycie wiersza poleceń do skopiowania aplikacji do katalogu /system/app/. Następnie aplikacja uruchomi się automatycznie z uprawnieniami roota (tak samo jak aplikacje systemowe) (więcej na partycjach Android )

 13
Author: Aniket Thakur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-28 11:12:20

SDK nie oferuje sposobu uruchamiania aplikacji jako root.

 7
Author: Romain Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-14 01:06:13