Je développe une application et je sais que ma base de données *.db
apparaîtra dansdata/data/com.****.***
Je peux accéder à ce fichier depuis AVD dans Eclipse avec l'aide du gestionnaire sqlite
Mais je ne peux pas accéder à ce fichier sur mon téléphone Android.
Je google et il dit que je dois rooter mon téléphone pour le faire, mais je ne veux pas le faire. (Nouveau téléphone, problèmes de garantie et problèmes de sécurité)
Voici donc ma question: Comment puis-je accéder à mon data/data/.....
répertoire dans mon téléphone Android " sans l'enraciner "?
Puis-je modifier les autorisations utilisateur pour le répertoire data/data.....
sans le rooter?
android
android-emulator
android-sqlite
adb
Naveen Prince P
la source
la source
Réponses:
L'accès aux fichiers directement sur votre téléphone est difficile, mais vous pourrez peut-être les copier sur votre ordinateur où vous pourrez en faire ce que vous voudrez. Sans enracinement, vous avez 2 options:
Si l'application est débogable, vous pouvez utiliser la
run-as
commande dans le shell adbVous pouvez également utiliser la fonction de sauvegarde d'Android.
Vous serez maintenant invité à «déverrouiller votre appareil et confirmer l'opération de sauvegarde». Il vaut mieux NE PAS fournir de mot de passe, sinon il devient plus difficile de lire les données. Cliquez simplement sur «sauvegarder mes données». Le fichier «backup.ab» résultant sur votre ordinateur contient toutes les données d'application au format de sauvegarde Android. Fondamentalement, c'est un fichier tar compressé. Cette page explique comment vous pouvez utiliser la commande zlib d'OpenSSL pour la décompresser. Vous pouvez utiliser la
adb restore backup.db
commande pour restaurer la sauvegarde.la source
adb backup -f \location\on\local\drive -noapk app.package.name
travaillé pour moi sans racinedd if=backup.ab bs=24 skip=1|openssl zlib -d > backup.tar
adb backup -noapk com.your.packagename
enregistrera le fichier ab dans le répertoire actuel , alors assurez-vous d'avoir navigué dans le bon répertoire (par exemplecd Desktop..
)android:allowBackup="false"
dans le manifeste.Si vous utilisez Android Studio 3.0 ou une version ultérieure, procédez comme suit.
Vous pouvez uniquement développer des packages qui s'exécutent en mode débogage sur un périphérique non rooté.
la source
3.0.1
, a-t-elle bougé?Vous pouvez également essayer de récupérer la base de données à l'aide de l'application root explorer. Et si cela ne fonctionne pas, vous pouvez essayer ceci:
adb shell
'su
chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
Après cela, vous devriez pouvoir parcourir les fichiers sur le périphérique rooté.
la source
Pour effectuer l'une des opérations ci-dessus (c'est-à-dire accéder aux dossiers protégés depuis votre téléphone lui-même), vous avez toujours besoin de root. (Cela inclut la modification des autorisations de montage sur le dossier / data et l'accès à celui-ci)
Sans root, il n'est pas possible d' accéder
/data
directement à la lecture sauf depuis votre application via le code. Vous pouvez donc essayer de copier ce fichier sur une carte SD ou dans un endroit accessible, puis vous devriez pouvoir y accéder normalement.L'enracinement n'annulera pas votre garantie si vous avez un appareil de développeur. Je suis désolé, il n'y a pas d'autre moyen AFAIK.
la source
adb pull
comme mentionné dans la réponse ci-dessous.La façon la plus simple (en une seule étape simple) d'extraire un fichier de votre dossier d'application débogable (disons
/data/data/package.name/databases/file
) sur un appareil Android 5.0+ non rooté est d'utiliser cette commande:la source
adb -d shell
run-as com.your.packagename cat databases/database.db > /sdcard/database.db
cd /sdcard
vous assurerdatabase.db
qu'il est là.adb pull /sdcard/database.db
ou simplement vous pouvez copier database.db depuis l'appareil.la source
Utilisez l'Explorateur de fichiers dans Eclipse. Sélectionnez Windows => Afficher la vue => Autre ... => Explorateur de fichiers.
Une autre façon consiste à extraire le fichier via adb:
la source
J'ai aussi eu le même problème une fois. Il n'y a aucun moyen d'accéder directement au fichier sur les appareils Android, à l'exception du shell ADB ou du périphérique de root.
À côté, voici 02 alternatives:
1)
2) Essayez ceci: https://github.com/sanathp/DatabaseManager_For_Android
la source
Pour sauvegarder d'Android sur le bureau
Ouvrez la ligne de commande cmd et exécutez ceci: adb backup -f C: \ Intel \ xxx.ab -noapk your.app.package . N'entrez pas de mot de passe et cliquez sur Sauvegarder mes données. Assurez-vous de ne pas enregistrer sur la racine du lecteur C. Vous pourriez être refusé. C'est pourquoi j'ai enregistré sur C: \ Intel.
Pour extraire le fichier * .ab
la source
Sur un appareil rooté , la bonne solution est la suivante:
La solution d'origine fonctionnait, mais le chmod retournerait un répertoire inconnu. La modification de la commande chmod en / data / data / * a donné accès à tous les sous-dossiers du répertoire de données à partir de DDMS dans Intellij. Je suppose que la même solution est vraie pour Eclipse DDMS.
MISE À JOUR Donc, ce que j'ai trouvé est étrange. J'utilise un Nexus 6 utilisant DDMS dans IntelliJ (Android Device Monitor). J'ai construit une petite application de démarrage. Cette application enregistre les données dans un fichier .csv dans data / data / com.example.myapp / files
Lorsque j'ai commencé à essayer d'accéder à ce fichier sur mon Nexus 6, j'ai constaté que je devais rooter l'appareil .. Je pouvais voir le dossier de données, mais essayer de l'ouvrir ne fonctionnerait pas. Comme mentionné en ligne dans d'autres endroits, l'extension + disparaîtrait puis réapparaîtrait peu de temps après (remarque, il existe des solutions sur le Web qui prétendent autoriser l'accès à ces dossiers sans enracinement, je ne les ai trouvées que trop tard, et je suis Je ne sais pas si je préfère ne pas rooter de toute façon ((je préfère être en mesure de le faire manuellement que de compter sur une application ou une invite de commande pour me donner mes solutions))). J'ai rooté mon 6 et réessayé DDMS.
À ce stade, il m'a montré le dossier de données et j'ai pu développer le dossier et voir le com. répertoires, mais je n'ai pu en ouvrir aucun. C'est alors que j'ai découvert la solution ci-dessus. Les instructions initiales ne fonctionneraient pas sur cette partie:
C'est alors que j'ai essayé la solution que j'ai publiée:
Cette solution semble fonctionner, mais uniquement sur certains dossiers. Je pouvais maintenant développer mon dossier myapp, mais je ne pouvais pas développer le répertoire de fichiers qu'il contient.
À ce stade, j'ai joué pendant un certain temps, puis j'ai pensé pourquoi ne pas simplement l'essayer sur le répertoire dont j'ai besoin plutôt que d'essayer ces entrées génériques.
Suivi par:
Ces commandes m'ont permis de développer et d'afficher les fichiers dans le répertoire de mon application pour confirmer que le fichier .csv était correctement enregistré.
J'espère que cela aide quelqu'un. J'ai lutté avec ça pendant des heures!
(pour ajouter encore un peu, curieusement, les autorisations ne sont pas passées au fichier .csv qui est passé au répertoire des fichiers. mes autorisations de répertoire de fichiers lisent drwxrwxrwx et mes autorisations de fichier log.csv lisent -rw-rw --- - .. juste FYI)
la source
Vous pouvez télécharger un fichier sigle comme ça:
adb exec-out run-as debuggable.app.package.name cat files/file.mp4 > file.mp4
Avant de télécharger, vous n'aurez peut-être pas besoin d'examiner la structure des fichiers dans votre répertoire d'applications. Pour cela, procédez comme suit
THelper
:La méthode Android-Studio
Shahidul
mentionnée ( https://stackoverflow.com/a/44089388/1256697 ) fonctionne également. Pour ceux qui ne voient pas l'DeviceFile Explorer
option dans le menu: Assurez-vous d'ouvrir le répertoire / android dans Android Studio. Par exemple, les utilisateurs natifs de React ont ceci à l' intérieur de leur dossier de projet directement au même niveau que le répertoire / ios.la source
L'un des moyens les plus simples consiste à créer votre base de données sur une carte SD. Parce que vous ne pouvez pas accéder au dossier de données de votre téléphone dans la mémoire interne, sauf si vous rootez votre téléphone. Alors pourquoi ne pas simplement créer votre base de données sur carte SD.
De plus, si vous le souhaitez, vous pouvez écrire du code de copie de fichier pour copier votre fichier de base de données existant (de la mémoire interne) vers la mémoire externe sans nécessiter de racine.
la source
File
pointage vers la carte SD et vous êtespeut être pour accéder à ce dossier, vous avez besoin des droits d'administration.
vous avez donc deux options: -
ps: si vous utilisez l'une des deux options ci-dessus, vous pouvez accéder à ce dossier en suivant ces étapes
et à partir de là, vous pouvez extraire votre fichier
la source
adb backup
n'a pas fonctionné pour moi, alors voici ce que j'ai fait (Xiaomi Redmi Note 4X, Android 6.0):1. Allez dans Paramètres> Paramètres supplémentaires> Sauvegarde et réinitialisation> Sauvegardes locales .
2. Appuyez sur «Sauvegarder» en bas de l'écran.
3. Décochez les cases "Système" et "Applications".
4. Appuyez sur le bouton de divulgation des détails à droite de la cellule "Applications" pour accéder à l'écran de sélection des applications.
5. Sélectionnez l'application souhaitée et appuyez sur OK.
6. Une fois la sauvegarde terminée, le fichier réel doit être localisé d'une manière ou d'une autre. Le mien se trouve dans / MIUI / backup / AllBackup / _FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_ .
7. J'ai ensuite suivi les étapes de cette réponse de RonTLVpour réellement convertir le fichier de sauvegarde (.bak dans mon cas) en tar (duplication de la réponse d'origine):
"
a) Allez ici et téléchargez: https://sourceforge.net/projects/adbextractor/ "
b) Extrayez le fichier téléchargé et accédez au dossier dans lequel vous avez extrait.
c) exécutez ceci avec vos propres noms de fichiers: java -jar abe.jar décompressez c: \ Intel \ xxx.ab c: \ Intel \ xxx.tar
la source
vous pouvez copier ce fichier db vers quelque part dans l'explorateur eclipse (par exemple: sdcard ou PC), et vous pouvez utiliser sqlite pour accéder et mettre à jour ce fichier db.
la source
La question est: comment-accéder-aux-données-dossier-de-données-dans-l'appareil-android?
Si l'appareil Android est Bluestacks * Root Browser APK affiche les données / données / ..
Essayez de télécharger le navigateur racine à partir de https://apkpure.com/root-browser/com.jrummy.root.browserfree
Si le fichier est un fichier texte, vous devez cliquer sur "Ouvrir sous", "Fichier texte", "Ouvrir sous", "RB Text Editor"
la source
Vous pouvez également essayer de copier le fichier dans le dossier de la carte SD, qui est un dossier public, puis vous pouvez copier le fichier sur votre PC où vous pouvez utiliser sqlite pour y accéder.
Voici un code que vous pouvez utiliser pour copier le fichier de données / données vers un dossier de stockage public:
Manifeste:
la source
La base de données SQLlite est stockée sur le téléphone de l'utilisateur et se cache sous le chemin:
vous avez 2 options ici:
la source