53 votes

run-as : Impossible de définir les capacités : Opération non autorisée

Sur Android 6.0.1, j'obtiens cette erreur lorsque j'essaie d'utiliser run-as.

> ~ adb shell                                                          14:29:01
shell@trlte:/ $ run-as org.ligi.passandroid                                    
run-as: Could not set capabilities: Operation not permitted

J'aime beaucoup la commande run-as - y a-t-il un moyen de la faire fonctionner en 6.0.1 ?

4 votes

Selon ce dernier, il s'agit d'un bug sur les appareils Samsung : code.google.com/p/Android/issues/detail?id=206581#c4

76voto

rustyx Points 2722

Si vous avez un SAMSUNG appareil, pas la peine - SAMSUNG cassé run-as en laissant tomber l'indicateur setuid (donc run-as n'a aucune chance de passer à une autre identité).

N'essayez pas non plus la solution de contournement "réinitialiser l'appareil" du Smart Switch, elle ne fonctionnera pas tant que SAMSUNG ne l'aura pas corrigé dans le firmware (il vaut donc la peine de mettre à jour la dernière version).

Utilisez une autre méthode pour accéder aux données de votre application, par exemple adb backup :

adb backup -f data.ab <my.package>
dd if=data.ab  bs=24 skip=1 | openssl zlib -d > data.tar

Au lieu de dd vous pouvez utiliser le abe qui peut également écrire des fichiers .ab.

2 votes

Merci, vous me sauvez la vie. Mais zlib n'a pas fonctionné sur mon Mac, j'ai donc dû utiliser l'application abe.jar pour l'extraction. Voir ma réponse stackoverflow.com/a/48077004/4747587

5 votes

@Henry As pointed ici sur mac vous pouvez faire la commande suivante : dd if=data.ab bs=24 skip=1 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))‌​" > data.tar

0 votes

Cela a fonctionné pour moi. Comme j'utilise Windows, j'ai dû installer Cygwin, copier vos commandes dans un .sh et exécuter ce .sh. Et ça a marché sans problème. Merci.

3voto

Helge Lange Points 31

La solution pour moi était le paramètre -autolaunch dans la configuration du Debugger du projet dans le champ Paramètres.

J'utilise Delphi 10.2 avec S7 Edge Android 7

0 votes

Confirmé. -autolaunch dans le run->paramètres, a fonctionné pour moi depuis Delphi 10.1.2 avec mon Samsung A7 (2017).

1voto

TarmoPikaro Points 11

Contrairement à une autre réponse ici, j'ai également essayé d'utiliser le commutateur intelligent et la réinitialisation du dispositif dur, mais malheureusement cette approche n'a pas fonctionné pour moi (J'ai perdu une heure supplémentaire juste pour essayer cette approche). En plus de ne pas fonctionner, cela peut créer un problème supplémentaire "compte Samsung : session expirée" - problème qui ne peut être résolu que si vous avez un accès Root à votre appareil.

J'ai moi-même utilisé des instructions provenant d'ici : https://www.youtube.com/watch?v=Sy4FWLHxGYs

et ensuite d'ici : https://www.tomsguide.com/us/samsung-galaxy-s6-guide,review-2856-3.html

pour obtenir l'accès Root à votre appareil, et après cela run-as peut être exécuté avec la commande supplémentaire "su -c" comme pour obtenir l'utilisateur Root. Ainsi, la commande entière ressemblera à ceci :

su -c run-as org.ligi.passandroid

AVERTISSEMENT : Obtenir un accès Root à votre appareil annulera très probablement la garantie de votre appareil si vous en avez encore une.

En plus de cela, je voulais être en mesure de déboguer mon application dans le Samsung Galaxy S6, donc j'ai modifié les composants de Visual studio, plus d'instructions peuvent être trouvées ici :

https://issuetracker.google.com/issues/37093233#comment53

Si vous avez un appareil Android basé sur Samsung, j'ai déjà signalé ce bogue à Samsung, mais je n'ai pas pu obtenir de calendrier pour savoir si et quand ils vont résoudre ce problème. Si vous possédez un autre appareil Android - il est logique de signaler ce problème au fabricant.

0voto

Henry Points 3697

La réponse de @RustyX m'a partiellement aidé. zlib ne fonctionnait pas sur mon Mac. J'ai donc dû utiliser le Extracteur de sauvegarde pour Android pour convertir .ab pour .tar fichier. Vous pouvez le télécharger ici .

Pour les instructions complètes, étape par étape, se référer ici .

0voto

S List Points 3323

Dans Visual Studio, Propriétés de l'application, Options Android, le changement de débogueur de C++ à .Net (Xamarin) semble avoir réglé le problème pour une application mixte C++/C#.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X