web-dev-qa-db-fra.com

Le dossier "data" d'Android Device Monitor est vide.

J'ai testé la création, l'insertion et la récupération de données dans la base de données de mes applications et je sais que cela fonctionne grâce à l'utilisation des instructions Log. 

Cependant, je souhaite accélérer les tests et utiliser le moniteur de périphériques Android. Cependant, bien que la base de données existe et que les données soient stockées, lors de l'accès ci-dessous, le dossier data est vide:

 enter image description here

Pourquoi serait-ce le cas? Comment cela peut-il être configuré pour afficher le fichier db et son contenu?

39
Sauron

Résoudre le problème à l'aide d'un émulateur

Le dossier /data peut être vide car il vous manque les autorisations appropriées. Pour le résoudre, je devais exécuter les commandes suivantes.

adb Shell
su

Ces commandes démarrent un shell dans l'émulateur et vous octroient les droits root. La commande adb se trouve dans le dossier platform-tools du SDK Android, généralement installé dans ~/Library/Android/sdk/ sur MacOS.

chmod -R 777 /data

Modifiez les autorisations du dossier (et des sous-dossiers de manière récursive) /data afin de les faire apparaître dans l'outil A ndroid Device Monitor .

adb root

Enfin, cette commande redémarre adb en tant que root. Attention, cela ne fonctionne que sur les versions de développement (généralement les versions d'émulateurs).

Ensuite, vous pouvez voir le contenu du dossier /data et transférer les données situées dans. Vous pouvez également le faire dans la console, en utilisant adb pull <remote> <locale>, par exemple:

adb pull /data/data/<app name>/databases/<database> .
37
ZenLulz

En plus des réponses de @Steven K: Si vous souhaitez accéder à vos données sans avoir à rooter votre appareil réel, vous devez exécuter votre application dans un emulator avec API 23 (ou une version inférieure). C'est un problème connu que des API supérieures à 23 peuvent poser des problèmes lors du déploiement d'Android Device Monitor.

24
Joni

Ce n'est pas vide ... vous n'avez simplement pas la permission de voir ce dossier sur un appareil.

Essayez-le dans un simulateur et cela fonctionnera pour vous puisque vous avez un accès root.

8
Steven K

Si quelqu'un rencontre le problème indiqué, suivez les étapes ci-dessous dans la fenêtre du terminal:

  1. Naviguez vers/Utilisateurs /Nom d'utilisateur/ Bibliothèque/Android/sdk/platform-tools
  2. Exécutez la racine ./adb

C'est tout. Problème résolu. 

6
Sankara Narayanan

Il peut être plus facile de stocker la base de données dans un dossier public pendant le développement. 

Ou vous pouvez voir ce post:

Comment accéder aux données/dossier de données dans un appareil Android?

5
Steven K

Il existe deux manières de parcourir le dossier de données (données/données) de votre appareil.

  1. Vous devez disposer d'un téléphone avec un accès root pour pouvoir parcourir le dossier de données à l'aide d'ADM (Android Device Monitor). 

Emplacement ADM - (YOUR_SDK_PATH\Android\sdk\tools)

  1. Vous devez exécuter ADB en mode racine. Pour ce faire, exécutez: adb root

Si vous voulez juste voir votre DB & Tables, alors le plus simple consiste à utiliser Stetho. Outil assez cool pour chaque développeur Android qui utilise SQLite buit by Facobook developed

Steps to use the tool

  1. Ajouter ci-dessous la dépendance dans le fichier de gradation de votre application (Module: app)

'compiler' com.facebook.stetho: stetho: 1.4.2 '

  1. Ajoutez des lignes de code ci-dessous dans votre méthode Activity onCreate ()
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Stetho.initializeWithDefaults(this);
 setContentView(R.layout.activity_main);
 }

Maintenant, construisez votre application et lorsque l'application est en cours d'exécution, vous pouvez parcourir votre base de données d'applications en ouvrant chrome dans l'URL:

chrome://inspect/#devices

Les images de la même chose sont comme ci-dessous_

ChromeInspact

 ChromeInspact

Votre DB 

 Your DB

J'espère que cela aidera tous! :)

4
Rupesh Yadav

J'ai eu le même problème avec API_25, cela n'a pas fonctionné pour moi.

Configurez un API_23 emulator, cela fonctionnera sur API_23.

1
Amir De

Dans cmd GoTo:

C:\Users\UserName\Android-sdks\platform-tools

Exécuter:

adb root

Terminé

0
Hecho

Si vous utilisez Windows, suivez ces instructions étape par étape:

  1. Lancez votre application dans l'émulateur Android.
  2. Ouvrez ensuite l'invite de commande en tant qu'administrateur et accédez au chemin d'accès au sdk, par exemple cd C:\Android\sdk\platform-tools.
  3. Tapez adb root
  4. Puis tapez adb pull /data/data/ name-of-your-package /databases/name-of-your-database
  5. Vous trouverez votre base de données située dans le dossier appelé platform-tools.

Vous pouvez ensuite installer l'extension Sqlite Manager dans Google Chrome via la boutique en ligne Chrome et l'utiliser pour afficher et gérer votre base de données exportée.

Si vous avez un téléphone enraciné, vous pouvez suivre les mêmes instructions que ci-dessus.

0
Nelson Guest