web-dev-qa-db-fra.com

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

sur Android 6.0.1 Je reçois 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 sur 6.0.1?

41
ligi

Si vous avez un périphérique SAMSUNG, ne vous embêtez pas - SAMSUNG brokerun-as en supprimant l'indicateur setuid (de sorte que run-as n'a aucune chance de passer à une identité différente).

Ne cherchez pas non plus la solution de contournement "Réinitialisation du périphérique" de Smart Switch, elle ne fonctionnera pas tant que SAMSUNG n'aura pas corrigé le problème dans le micrologiciel (il est donc intéressant de mettre à jour la dernière version).

Utilisez une autre méthode pour accéder aux données de votre application, telle que 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 l’outil abe , qui permet également d’écrire des fichiers .ab.

54
rustyx

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

J'utilise Delphi 10.2 avec S7 Edge Android 7

3
Helge Lange

Contrairement à une autre réponse, j’ai également essayé d’utiliser le commutateur intelligent et la réinitialisation matérielle, mais malheureusement, cette approche n’a pas fonctionné pour moi (perte supplémentaire d’une heure pour l’essayer). En plus de ne pas fonctionner, cela pourrait créer un problème supplémentaire "Compte samsung: session expirée" - un problème qui ne peut être résolu que si vous avez un accès root à votre appareil.

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

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

pour obtenir un accès root sur votre appareil, et ensuite exécuter-as peut être exécuté avec la commande supplémentaire "su -c" comme pour obtenir l'utilisateur root. Donc, toute la commande ressemblera à ceci:

su -c run-as org.ligi.passandroid

WARNING: L'accès root à votre appareil annulera probablement la garantie de votre appareil s'il vous en reste.

En plus de cela, je voulais pouvoir déboguer mon application à l'intérieur du Samsung Galaxy S6. J'ai donc modifié les composants de Visual studio. Vous pouvez trouver plus d'instructions ici:

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

Si vous possédez un appareil Android basé sur Samsung - j'ai déjà signalé ce bogue à Samsung, mais je ne pouvais obtenir aucun calendrier si, quand et si, ils allaient résoudre ce problème. Si vous possédez un autre appareil Android - il est logique de signaler ce problème au fabricant.

1
TarmoPikaro

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

Pour l'instruction complète étape par étape, reportez-vous ici .

0
Henry

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

0
S List