Je me suis connecté à mon appareil en direct à l'aide de l'adb et des commandes suivantes:
C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied
J'ai été surpris de voir que l'accès m'était refusé. Comment se fait-il que je ne puisse pas parcourir les répertoires en utilisant la ligne de commande comme celle-ci?
Comment obtenir un accès root sur mon téléphone?
Réponses:
Il y a deux choses à retenir si vous souhaitez tout parcourir sur votre appareil.
adb root
la source
À partir du niveau d'API 8 (Android 2.2), pour l'application débuggable (celle construite par Android Studio tout le temps sauf si la version de version a été demandée), vous pouvez utiliser la
run-as
commande shell pour exécuter une commande ou un exécutable en tant qu'utilisateur / application spécifique ou basculez simplement vers l' UID de votre application pour pouvoir accéder à son répertoire de données .Liste du contenu du répertoire de votre application:
Basculez vers l'UID de com.yourapp et exécutez toutes les autres commandes en utilisant cet uid (jusqu'à ce que vous appeliez
exit
):Remarque 1 : il existe un problème connu avec certains téléphones HTC Desire. En raison d'un propriétaire / autorisations non standard du
/data/data
répertoire, larun-as
commande ne s'exécute pas sur ces téléphones.Note 2 : Comme indiqué dans les commentaires de @Avio:
run-as
a également des problèmes avec les téléphones Samsung Galaxy S exécutant Cyanogenmod dans n'importe quelle version (de 7 à 10.1) car sur cette plate/data/data
- forme se trouve un lien symbolique vers/datadata
. Une façon de résoudre le problème est de remplacer le lien symbolique par le répertoire réel (malheureusement, cela nécessite généralement un accès root).la source
run-as com.mypackage
. Le problème que j'ai rencontré est celui desqlite3 /data/data/com.mypackage/databases/mydb
"sqlite3: permission refusée". Sqlite3 peut-il être exécuté uniquement par root?avant de commencer, avez-vous un téléphone rooté ? sinon, je suggère fortement qu'il soit temps que vous fassiez le saut. 99% des tutoriels qui vous aident à faire cela nécessitent que vous ayez un téléphone enraciné (je sais, car j'ai passé environ une heure à chercher un moyen de le faire sans avoir un téléphone enraciné .. je n'ai pas pu en trouver. ) aussi si vous y réfléchissez, votre iPhone doit également être rooté pour effectuer cette même tâche. C'est donc tout à fait raisonnable. En savoir plus sur l'enracinement à la fin de la réponse.
à partir de votre type de ligne de commande:
cela vous amène à la ligne de commande de votre shell android (vous devriez voir quelque chose comme ceci:
shell@android:/ $
maintenant tapez:cela devrait vous amener directement au répertoire de données de
com.domain.yourapp
:si ce n'est pas le cas (c'est-à-dire si vous obtenez une erreur), vous n'avez probablement pas de téléphone rooté ou vous n'avez pas utilisé vos privilèges d'utilisateur root. Pour utiliser vos privilèges d'utilisateur root, tapez
su
sur la ligne de commande adb et voyez ce qui se passe, si vous obtenez une erreur, votre téléphone n'est pas rooté. Si ce n'est pas le cas, rootez-le d'abord, puis continuez ces instructions.à partir de là, vous pouvez taper
ls
et vous verrez tous les répertoires, y compris les dbs:après cela, vous pouvez utiliser sqlite3 pour parcourir la base de données .. si vous ne l'avez pas installé (vous pouvez le découvrir en tapant
sqlite3
, si vous obtenez,command not found
vous devrez l'installer. Pour installer sqlite, suivez les instructions ici .à propos de l'enracinement: si vous n'avez jamais rooté votre téléphone auparavant et que vous craignez qu'il visse votre téléphone, je peux vous dire en toute confiance qu'il n'y a rien à craindre. il existe des tonnes de tutoriels d'enracinement de téléphone rapides et faciles pour à peu près tous les nouveaux et anciens modèles, et vous pouvez rooter votre téléphone même si vous avez un mac (j'ai rooté mon s3 avec mon mac).
la source
run-as
travailler. Je viens de l'essayer sur un Galaxy Nexus S de productionbuild the application as debuggable (either by building it with the Eclipse, or ant debug command)
peuvent vous paraître triviales, mais elles m'intimident un peu. Je suppose que ma réponse s'adresse davantage aux personnes qui sont à l'aise avec l'enracinement de leurs téléphones Android, mais qui ne connaissent pas bien le monde des développeurs Android. Mais je suis heureux que nous ayons cette discussion. Je veux que les lecteurs de ma réponse soient conscients des autres alternatives non-$ adb shell
$ cd / données
$ ls
opendir a échoué, autorisation refusée
Vous devriez faire ceci:
D'ACCORD!
la source
J'ai eu un problème similaire en essayant d'opérer sur un Samsung Galaxy S rooté. Émettre une commande depuis la coque de l'ordinateur
échoue avec un message "impossible de s'exécuter en tant que root dans les versions de production". Voici une méthode simple qui permet de devenir root.
Au lieu de la précédente, exécutez les deux commandes suivantes l'une après l'autre
Après la première commande, si l'invite est passée de '>' à '$' comme indiqué ci-dessus, cela signifie que vous êtes entré dans l'environnement du shell adb. Si, par la suite, l'invite est devenue «#» après avoir émis la deuxième commande, cela signifie que vous êtes maintenant root. Désormais, en tant que root, vous pouvez faire tout ce que vous voulez avec votre appareil.
Pour revenir au shell `` sûr '', lancez
Vous verrez que l'invite '$' réapparaît, ce qui signifie que vous êtes dans le shell adb en tant qu'utilisateur et non en tant que root.
la source
adb shell + su
résolution de la question de la permission ennuyeuse pour toujours. J'ai eu un problèmesu: not found
sur Android 4.3, mais depuis que j'ai mis à niveau vers la version 4.4.2, le problème a disparu. 4.3 semble avoir des problèmes.J'ai eu beaucoup de problèmes avec ça aussi. Je ne comprends toujours pas complètement l'autorisation et l'exécution de la racine, mais cela a fonctionné pour moi (l'une des réponses précédentes en partie) pour copier le fichier de base de données à partir de / data / data / [nom du package] /databases/my_db.db. Exécuter shell root ou su dans le shell pour une raison quelconque ne fonctionnait pas, ni copier le fichier db (je pouvais cependant naviguer vers le répertoire), ni sqlite3 .
Donc, cela a fonctionné! Dans l'invite de commande DOS:
Allez maintenant dans le répertoire SDCARD et récupérez votre fichier db_copy.db. Même cela était caché, mais j'ai réussi à l'envoyer par e-mail. De retour sous Windows, j'ai pu ouvrir le fichier db avec SQLite Database Browser. :)
la source
Voici les deux étapes pour obtenir un accès root:
la source
les builds de production ne peuvent pas saisir / data / app
peut nécessiter un changement de propriétaire pour le faire fonctionner.
la source
Le problème pourrait être que nous devions spécifiquement donner un accès root adb dans les options de développement des derniers CM. Voici ce que j'ai fait.
après avoir modifié les options de développement ...
la source
si vous connaissez le package d'application, vous pouvez
cd
directement dans ce dossier.par exemple
cd data/data/com.yourapp
cela vous déposera dans un répertoire qui
read/writable
vous permettra de modifier les fichiers selon vos besoins. Étant donné que le dossier est le même sur leemulator
, vous pouvez l'utiliser pour obtenir le chemin du dossier.la source
Si vous voulez simplement voir votre base de données et vos tables, le moyen le plus simple est d'utiliser
Stetho
. Outil assez cool pour tous les développeurs Android qui utilisentSQLite
buit byFacobook developed
.Steps to use the tool
Maintenant, créez votre application et lorsque l'application est en cours d'exécution, vous pouvez parcourir votre base de données d'application, en ouvrant chrome dans l'url:
Les captures d'écran de la même chose sont comme ci-dessous_
J'espère que cela aidera à tous! :)
la source
Cela fonctionne si votre appareil Android est enraciné par quelque moyen que ce soit (je ne sais pas s'il fonctionne pour un appareil non enraciné).
adb shell
- accéder au shellsu
- devenez le superutilisateur.Vous pouvez maintenant lire tous les fichiers de tous les répertoires.
la source
sans rooter l'appareil, vous pouvez accéder aux fichiers par ce qui suit La capture d'écran cmd:
démarrer l'adb en utilisant cmd à partir du dossier platform-tools en fonction de votre utilisateur
il peut se trouver dans un autre dossier selon l'endroit où vous l'avez installé.
afficher les appareils de travail.
pour dire que la réponse os la commande est
écrire la commande
il s'ouvrira dans
4.Accéder aux fichiers, lister tous les fichiers
et ainsi de suite le répertoire chang vers n'importe où ailleurs comme le dossier de données
la source
su
) ne fonctionne pas / n'est pas autorisé. Test avec Android 4.3.Lorsque vous êtes dans le répertoire shell du périphérique. Courez
Ensuite, vous devriez pouvoir accéder aux données / dossier.
la source