Je vais me répéter d' une autre réponse :
À partir du niveau d'API 8 (Android 2.2), si vous créez l'application en tant que déboguable, 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 simplement basculer vers le UID
de votre application afin d'accéder à ses données annuaire.
Donc, si vous souhaitez extraire votre base de données d'application de l'appareil, vous devez exécuter la version de débogage de l'application, connectez-vous adb shell
et exécutez la commande suivante:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Cela copiera votre db-file
à la racine de votre carte SD / stockage externe. Maintenant, vous pouvez facilement l'obtenir à partir de là en utilisant le gestionnaire de fichiers, adb pull
ou tout ce que vous voulez. Notez qu'avec cette approche, il n'est PAS nécessaire que votre application ait l' WRITE_EXTERNAL_STORAGE
autorisation, car la copie est effectuée par l'utilisateur du shell qui peut toujours écrire sur le stockage externe.
Sur les systèmes Linux / Mac, il est possible de copier une base de données directement sur votre ordinateur avec la commande suivante que l'on peut utiliser sans entrer dans le shell adb:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
Cependant, cela ne fonctionnera pas correctement sous Windows en raison de la conversion des symboles CR / LF. Utilisez la première méthode là-bas.
SQLite format 3
chaîne. Assurez-vous également que vous avez unesqlite
version correcte (c'est-à-dire que vous n'essayez pas d'ouvrir la base de données sqlite3 avec l'exécutable sqlite2). Et vous pouvez également essayer d'autres clients SQLite (par exemple SQLiteStudio ). J'espère que ça aide.permission denied
J'utilise ce script shell sur mon MAC, qui copie la base de données directement dans mon dossier personnel. Solution simple en un clic, changez simplement le nom du package (com.example.app) et le nom de la base de données (database.sqlite)
Script simple
Script qui accepte les arguments [nom_package] [base de données]
la source
La meilleure façon d'afficher et de gérer votre base de données d'applications Android est d'utiliser cette bibliothèque https://github.com/sanathp/DatabaseManager_For_Android
Avec cette bibliothèque, vous pouvez gérer la base de données SQLite de votre application à partir de votre application elle-même. vous pouvez afficher les tables dans la base de données de votre application, mettre à jour, supprimer, insérer des lignes dans vos tables .Tout à partir de votre application.
C'est un seul fichier d'activité java, ajoutez simplement le fichier java à votre dossier source.Lorsque le développement est terminé, supprimez le fichier java de votre dossier src c'est tout.
Cela m'a beaucoup aidé. J'espère que cela vous aidera aussi.
Vous pouvez voir la démo d'une minute ici: http://youtu.be/P5vpaGoBlBY
la source
Bien que ce soit une vieille question, je pense qu'elle est toujours d'actualité et mérite une réponse de l'état actuel. Il existe des outils disponibles, qui vous permettent d'inspecter directement les bases de données (sans avoir besoin de les extraire de l'appareil ou de l'émulateur).
L'outil que j'ai découvert le plus récemment (et que je préfère le plus) est la base de données de débogage Android .
Il vous suffit d'ajouter cette dépendance:
Aucun autre code n'est requis. Après avoir démarré votre application, ouvrez logcat et filtrez pour "DebugDB" et vous trouverez un message disant
Il fonctionne avec tous les navigateurs et vous pouvez inspecter vos tables de base de données et vos préférences partagées.
Il fonctionne également avec les émulateurs par défaut et Genymotion.
L'outil que j'ai utilisé avant est stetho .
Inconvénient: vous devez ajouter un peu de code et vous êtes lié au navigateur Chrome.
Avantage: vous avez également la possibilité d'inspecter le trafic réseau.
la source
Dans mon application, j'exporte la base de données sur la carte SD. Une fois que la base de données est sur la carte SD, vous pouvez y accéder en branchant l'appareil sur votre ordinateur.
Regardez ce post: Faire une sauvegarde de base de données sur SDCard sur Android
la source
Si vous obtenez
essayer
Notez la double citation!
la source
J'ai simplement fait:
Ensuite, je peux déboguer une base de données sqlite ou tout ce que je veux faire à partir du shell avec les bonnes autorisations.
la source
Il existe un moyen si un apk est déboguable d'utiliser un programme appelé run-as à partir du shell adb (non root) pour copier le fichier privé d'une application.
la source
Voici des instructions étape par étape - principalement tirées d'une combinaison des autres réponses. Cela fonctionne avec les appareils qui ne sont pas déverrouillés.
Connectez votre appareil et lancez l'application en mode débogage.
Copiez le fichier de base de données de votre dossier d'application sur votre carte SD: exécutez:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Tirez les fichiers de la base de données sur votre machine: exécutez:
./adb pull / sdcard / execute: ./adb
Installez Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Ouvrez Firefox SQLLite Manager et ouvrez votre fichier de base de données à partir de l'étape 3 ci-dessus.
Prendre plaisir!
la source
Android Studio 4.1 Ajout d'une nouvelle fonctionnalité pour afficher / modifier les bases de données Android SQLite.
Comment ouvrir l'inspecteur de base de données
Pour ouvrir l'inspecteur de base de données dans Android Studio, vous devez sélectionner
View > Tool Windows > Database Inspector
dans la barre de menus.Vous devez également exécuter l'application sur un appareil exécutant le niveau d'API 26 ou supérieur.
En utilisant cet outil, vous pouvez
Interrogez vos bases de données
Modifiez et déboguez votre base de données
la source
Dans le nouvel Android Studio 4.1, il y a le nouvel inspecteur de base de données .
Vous pouvez sélectionner les options suivantes dans la barre de menus
View > Tool Windows > Database Inspector
pour l'ouvrir. Des instructions plus détaillées peuvent être trouvées dans ce blog .Une autre façon est d'utiliser stetho pour cela. Vous ajoutez la dépendance et pouvez ensuite utiliser Chrome DevTools (chrome: // inspect) pour vérifier la base de données lorsque l'appareil est branché.
la source
Vous devez exécuter adb en tant que root ou l'utiliser sur un téléphone rooté.
Pour exécuter adb en tant que root, utilisez
adb root
Voir aussi: Pourquoi mon accès au dossier de données est-il refusé lorsque j'utilise adb?
la source
Aucune des
run-as
solutions -et-chat-à-sdcard ne fonctionnait pour moi sur Android 4.4.2. Je ne suis pas sûr, mais je soupçonne que cela peut être dû au fait que l'run-as
outil ne gère pas correctement le nouveausdcard_r
et lessdcard_rw
autorisations.J'ai d'abord dû copier le fichier de base de données
/files
dans le stockage interne privé de mon application:Ensuite, j'ai copié
/sdcard/Android/data/com.example.myapp/files
dans Javaland (cela nécessite l'WRITE_EXTERNAL_STORAGE
autorisation):Enfin, j'ai copié le fichier sur mon ordinateur portable:
la source
Mon appareil n'avait pas de carte SD
donc la première solution n'a pas fonctionné pour moi.Si vous rencontrez un problème similaire, essayez comme ceci:
la source
/sdcard
n'est pas nécessairement une carte SD. Sur mon téléphone, il pointe vers le stockage interne lorsqu'aucune carte SD physique n'est présente.Essayez cette application: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Il fournit un accès à distance à votre base de données sans la retirer.
En version payante, il dispose d'un accès root pour la base de données privée (/ data / data / package-name ...) ou implémente un fournisseur de contenu pour se connecter à l'aide de SQLiteWeb (Instructions dans l'application)
Mais si vous souhaitez rester avec la version gratuite, vous pouvez créer votre base de données dans un stockage externe:
la source
Sous OSX, en utilisant @Tadas answer avec automator et sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
ouvrez Automator et créez un nouveau flux de travail.
ajoutez l'action "Exécuter le script Shell".
Collez ceci:
source ~ / .bash_profile adb shell 'run-as cat /data/data/your_app_uid/databases/db.name> /tmp/db.name' adb pull /tmp/db.name ~ / open -a sqlitebrowser ~ / db. Nom
cliquez sur exécuter pour actualiser la base de données sur sqlitebrowser.
la source
cd <ANDROID_SDK_PATH>
(pour moi sur Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(cela ne fonctionne que si un seul émulateur est en cours d'exécution)cd data/data
su
(obtenir les privilèges de super utilisateur)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, sinon l'instruction n'est pas émise et elle passe à une nouvelle ligne à la place.)Remarque: utilisez
ls
(Linux) oudir
(Windows) si vous devez répertorier le contenu du répertoire.la source