Sur un appareil Android non rooté, je peux accéder au dossier de données contenant la base de données à l'aide de la run-as
commande avec le nom de mon package. La plupart des types de fichiers que je me contente de visualiser, mais avec la base de données, je voudrais les extraire de l'appareil Android.
Y a-t-il une commande download
copy
ou move
de cette partie du shell adb? Je souhaite télécharger le fichier de base de données et afficher son contenu à l'aide d'un navigateur de base de données.
Une réponse ici consiste à transformer l'ensemble du package d'application en une archive compressée, mais il n'y a pas de réponse supplémentaire sur la façon d'extraire cette archive une fois que cela est fait et déplacé vers la machine, me laissant très distrait quand il pourrait y avoir une solution plus directe pour commencer
Réponses:
De par la conception
user
d'Android (c'est ce que vous avez sur votre téléphone jusqu'à ce que vous déverrouilliez le bootloader et flasher le téléphone avecuserdebug
ou leeng
logiciel), il limite l'accès au stockage interne - chaque application ne peut accéder qu'à ses propres fichiers. Heureusement pour les développeurs de logiciels qui ne souhaitent pas rooter leurs téléphones, Google fournit un moyen d'accéder au stockage interne des versions déboguables de leurs packages à l'aide de larun-as
commande.Pour télécharger le à
/data/data/debuggable.app.package.name/databases/file
partir d'un appareil Android 5.1+, exécutez la commande suivante:Pour télécharger plusieurs fichiers dans un dossier sous le
/data/data/debuggable.app.package.name/
à la fois - utiliseztar
:la source
run-as
pour copier le fichier vers un emplacement sur le stockage externe et extrayez le fichier de base de données à partir de là, plutôt que de jouer avec les autorisations de fichier.La réponse acceptée ne fonctionne plus pour moi (bloquée par Android?)
Alors à la place, j'ai fait ceci:
la source
su
pour que larun-as
commande fonctionne.Si quiconque cherche à extraire la base de données de l' application de débogage peut utiliser la procédure ci-dessous:
la source
J'ai publié un script shell simple pour le vidage de bases de données:
Il effectue deux méthodes distinctes décrites ici:
\r
caractères que certains périphériques envoient au shell.De là, vous pouvez utiliser diverses applications CLI ou GUI SQLite, telles que
sqlite3
ousqlitebrowser
, pour parcourir le contenu de la base de données.la source
Je ne pouvais rien faire d'autre pour moi mais ceci:
La première sortie est de sortir du run-as, la deuxième sortie est de sortir du shell adb pour faire le pull.
la source
Pour la version de débogage de l'application, il est très pratique d'utiliser la commande
adb exec-out run-as xxx.yyy.zzz cat somefile > somefile
pour extraire un seul fichier. Mais vous devez faire plusieurs fois pour plusieurs fichiers. Voici un script simple que j'utilise pour extraire le répertoire.J'espère que ce serait utile. Ce script est également disponible sur gist .
L'utilisation typique est
puis il extraira tous les fichiers du répertoire de bases de données de vos applications, qui est
/data/data/com.example.myapplication/databases
, dans le répertoire actuel.la source
Approche beaucoup plus simple pour télécharger le fichier sur votre ordinateur local:
Dans le shell de votre PC, exécutez:
la source
Vous pouvez utiliser ce script pour obtenir la base de données Realm.
la source
Si quelqu'un cherche une autre réponse qui peut être utilisée pour récupérer
Database
ainsi queShared Preferences
puis suivez cette étape:Dans votre
build.gradle
fichier de votre application, ajoutez une lignemaintenant, lorsque vous exécutez votre application en
non-release
mode, votre application ouvrira automatiquement le port 8080 à partir de votre appareil,IP address
assurez-vous que votre appareil est connecté viawifi
et que vouslaptop
partagez le même réseau. Maintenant, visitez simplement l'urlpour regarder toutes les données de la base de données avec les préférences partagées.
la source
Voici une solution qui fonctionne sur un appareil exécutant Android 5.1. L'exemple suivant est pour Windows.
Vous avez besoin de sed (ou sed.exe sous Windows, par exemple depuis cygwin.) (Sous Unix, ce sera juste là;)). Pour supprimer les mauvais caractères '\ r', au moins sur Windows.
Maintenant, exécutez simplement la commande suivante:
La commande sed supprime les caractères / r de fin.
Bien sûr, vous devez remplacer "com.yourcompany.yourapp" par le nom du package de l'application et "YourDatabaseName" par le nom de la base de données dans l'application.
la source
Le fichier de base de données est vide lors de l'utilisation
adb run-as
. Cela peut être résolu en appelant close () sur l'instance RoomDatabase. Appelez close () pour laisser SQLite écrire son journal sur le disque. J'ai créé ce bouton qui ferme la connexion à la base de données sur demande:via GIPHY
Voici comment appeler close sur l'instance RoomDatabase.
la source