Intereting Posts
У кого-нибудь есть MediaPlayer, работающий с ParcelFileDescriptor и createPipe ()? Android: как получить пол и возраст пользователя? Создание приложений для iphone & android для существующего приложения rails Сохранять список или задавать в SharedPreferences Пользовательская карта Google Maps Engine на Android-картах v2? Проблема с расширением многоуровневого ExpandableListView Каковы наиболее популярные библиотеки ui с открытым исходным кодом для Android с открытым исходным кодом Что означает «работает в потоке пользовательского интерфейса» для onPostExecute ()? Невозможно разрешить символьные «инструменты» и «GradleException» GetChildFragmentManager вызывает исключение NoSuchMethod на устройстве 4.0.3, но не 4.2.2 WebView бросает приемник не зарегистрирован: android.widget.ZoomButtonsController Авария Aviary на Android L (5.0) Для платформы отсутствует модуль Cordova – check_reqs. Пропуск Прокси-сервер Charles не работает по методу SSL Connect Как установить проверку в canvas android?

Genymotion. Как вытащить базу данных с устройства. Папка my / data / data / кажется пустой

У меня проблема с установкой genymotion в Ubuntu. В основном я не могу отлаживать мою базу данных, так как с помощью СУБД в eclipse и adb в оболочке я не могу просмотреть содержимое / data / folder. Нет файлов.

Я вхожу через adb с помощью cd в / sdk / platform-tools и печатает ./adb shell su. Я вижу, что вкладка не работает, поэтому я слепо набираю путь. В любом случае я не могу вытащить db, возможно, я делаю что-то неправильно с командами.

Через СУБД я пытаюсь подключиться, но папка с данными не отображает содержимое.

На эмуляторе все работает плавно, но эмулятор медленный, и я предпочел бы использовать genymotion.

Любые предложения по решению этой проблемы?

Solutions Collecting From Web of "Genymotion. Как вытащить базу данных с устройства. Папка my / data / data / кажется пустой"

У меня нет проблемы, о которой вы говорите, пользователь оболочки по умолчанию в Genymotion является root, поэтому этого не должно произойти. Несмотря на все, вы можете использовать команду run-as для прямого доступа к вашим данным.

Сделать это коротким. Папка данных вашего приложения защищена правами пользователя вашего приложения. Пользователь оболочки по умолчанию не имеет права доступа к папке приложения. Вы можете изменить пользователя, который использует оболочка, благодаря команде run-as .

  1. Открыть оболочку: adb shell
  2. Затем введите: run-as your.package.name

Эта команда изменит пользователя оболочки на пользователя вашего приложения. Таким образом, вы будете иметь право читать и записывать данные приложения. Вы также будете перенаправлены в папку данных вашего приложения: /data/data/you.package.name

Когда это будет сделано, вы сможете легко просматривать файлы.

Обратите внимание : ваше приложение должно быть построено как debug, чтобы иметь возможность использовать эту команду. Он должен отображаться в списке процессов устройства в DDMS.

Запустите эмулятор на локальном компьютере, затем

Localuser: ~ localhost $ adb shell
Shell @ android: / $ su
Shell @ android: / # cp / data / data / your.package.name / databases / your_database.db / mnt / shell / emulated / 0 / Загрузить / your_database.db
Shell @ android: / # exit
Shell @ android: / $ exit
Localuser: ~ localhost $ adb pull / mnt / shell / emulated / 0 / Загрузить / your_database.db ~ / your_database.db

Что он делает:
1. Подключается к эмулятору
2. Запросы разрешения суперпользователя
3. Копирует файл, доступный только для суперпользователя, в общий каталог (в этом случае загрузка)
4. Вытаскивает файл из общей папки (Загрузки) в домашний каталог локального компьютера; Вы также можете выполнить этот шаг от eclipse gui.

Вы должны установить права доступа к этой папке / файлу, тогда вы можете легко вытащить:

Adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"

Adb pull /data/data/package.name/databases/file.

Мне удалось отвлечься от проблемы, поэтому я отправляю свое решение на случай, если кто-то найдет его полезным.

Раньше я создавал виртуальные машины без google apis, приложение superUser разбилось каждый раз, когда я хотел укоротить телефон.

Поэтому я создал виртуальную машину, которая поставляется с Google Play и загружала приложение SQL Debugger. Я также использую этот код в своем тестовом наборе и поэтому получаю db на SD-карту в конце каждого теста, который я запускаю. Таким образом, мне не нужно иметь права суперпользователя.

 public static void copyDbToSd(Context context) { File dbFile = context.getDatabasePath((String) DatabaseHandler.DATABASE_NAME); InputStream myInput; try { myInput = new FileInputStream(dbFile); OutputStream myOutput = new FileOutputStream( Environment.getExternalStorageDirectory() + java.io.File.separator + "database.db"); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myOutput.flush(); myOutput.close(); myInput.close(); } catch (FileNotFoundException e) { Log.e(TAG, "Exception: ", e); } catch (IOException e) { Log.e(TAG, "Exception: ", e); } } 

Где DatabaseHandler.DATABASE_NAME – это имя моей базы данных, которую я установил при создании db.