2017-09-01 2 views
1

Je cours Android 7.1.1 sur un périphérique personnalisé avec l'AOSP compilé à partir de la source dans la configuration 'userdebug', ce qui donne accès à la racine et déboguer.La racine adb fonctionne Runtime.GetRuntime(). Exec ("su"); ne fonctionne pas

Je peux me connecter à l'appareil en utilisant le pont d'appareil Android.

adb root 
adb shell 
device_name:/ # su 

Toutes ces commandes fonctionnent bien et je peux apporter des modifications en tant que super-utilisateur. Le problème que j'ai exécute le même « su » commande à partir d'une application

Java.Lang.Process suProcess = Runtime.GetRuntime().Exec("su"); 

L'erreur que je reçois est:

java.io.IOException: Impossible d'exécuter le programme « su »: erreur = 13, autorisation refusée

Y at-il une différence entre les commandes adb root/shell su et les commandes exécutées depuis une application?

Répondre

1

Il semble que Linux DAC et SE-Android bloquent le processus de votre application d'accéder à l'exécutable 'su'.

Vérifiez que votre système fonctionne en mode forcé, ce qui signifie que SE-Android est activé. Si tel est le cas, vous pouvez désactiver temporairement en exécutant:

adb root 

adb shell setenfoerce 0 

Cela désactivera SE Android et ne bloque pas le processus d'applications d'exécution « su ».

En outre, votre application ne dispose peut-être pas des autorisations DAC nécessaires pour lancer 'su' en tant que root. Vous pouvez exécuter la commande suivante:

adb shell ps 

Pour une liste de tous les processus en cours d'exécution sur votre appareil. localisez votre application (en recherchant son nom de package) et vérifiez son groupe et son ID utilisateur. très probablement aucun d'entre eux ne sera root.

Veuillez noter que la création d'une image personnalisée de type userdebug n'est pas tout à fait similaire à l'enracinement d'un périphérique Android standard. La version de débogage est destinée à permettre l'accès aux composants internes de l'appareil tout en simulant un périphérique fonctionnel avec tous ses mécanismes de sécurité par défaut activés.