web-dev-qa-db-fra.com

Comment obtenir des autorisations root via le SDK Android Android?

J'apprends la programmation Android et je veux créer une application qui doit s'exécuter en tant que root. La chose logique serait d'ajouter une autorisation root dans le manifeste Android.

J'ai vu ce lien dans la documentation, et surtout noté la permission FACTORY_TEST :

public static final String FACTORY_TEST

Depuis: API niveau 1

Exécuter en tant qu'application de test du fabricant, en tant qu'utilisateur root. Disponible uniquement lorsque l'appareil fonctionne en mode test du fabricant. Valeur constante: "Android.permission.FACTORY_TEST"

Est-ce la meilleure façon?

S'il n'est pas possible d'utiliser le SDK, comment faire fonctionner une application "root"?

22
Rob

Ce que vous devez faire est quelque chose comme:

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

Cela provoque l'affichage de SuperUser, ce qui vous permet de l'autoriser ou de le bloquer à partir de l'accès root. Cette approche peut ne pas fonctionner si l'utilisateur n'est pas enraciné. Ici est un moyen de le tester.

30
Mohit Deshpande

Commençons par obtenir les bonnes bases. Android exécutez le noyau Linux en dessous. Maintenant, si vous devez y exécuter votre processus avec des privilèges de super utilisateur (l'exécuter en tant que root), la seule façon d'exécuter votre processus est via command line car c'est le seul moyen d'interagir directement avec le noyau. Vous devez également utiliser su avant d'exécuter une commande. Aussi comme Chris l'a mentionné dans son commentaire sur la 1ère réponse

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

ne fera presque rien. Il demandera simplement un privilège de super utilisation à l'aide de la boîte de dialogue. Ce que vous pouvez faire, c'est au lieu d'exécuter simplement su, vous pouvez exécuter votre processus avec su comme suit

Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});

L'option -c

Parmi les quelques options les plus couramment utilisées par su se trouve -c, qui indique su to execute the command that directly follows it on the same line. Une telle commande est exécutée en tant que nouvel utilisateur, puis la fenêtre du terminal ou la console à partir de laquelle su a été exécutée revient immédiatement sur le compte de l'ancien utilisateur après la fin de l'exécution de la commande ou après la fermeture de tout programme qu'elle a lancé. (- Plus de détails )

Option alternative

Une alternative à la méthode ci-dessus qui pourrait fonctionner est d'utiliser la ligne de commande pour copier votre application dans /system/app/ répertoire. Ensuite, votre application s'exécutera automatiquement avec les privilèges root (identiques aux applications système)

14
Aniket Thakur

Le SDK n'offre pas un moyen d'exécuter une application en tant que root.

9
Romain Guy