Почему я получаю сообщение «SQLite3: не найден» на укоренившемся Nexus One, когда я пытаюсь открыть базу данных с помощью оболочки ADB?

StackOverflow https://stackoverflow.com/questions/3645319

Вопрос

# sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3: not found
Это было полезно?

Решение

На эмуляторе Android, sqlite3 в /system/xbin. Отказ Здесь нет /system/xbin на Nexus One (Android 2.2). Следовательно, я подозреваю, что sqlite3 не установлен на Nexus One.

Другие советы

В качестве альтернативы (не может быть безопасным или даже хорошей идеей, хотя) вы всегда можете загрузить sqlite3 двоичный /system/bin Это работало для меня:

Сначала давайте монтироваться /system/ Разрешить чтение / запись (RW)

$ adb shell
$ su
# mount -o remount,rw /system

В другом каталоге изменений терминала (CD), где sqlite3 есть и давайте нажать

$ ls
sqlite3
$ adb push sqlite3 /sdcard/

Теперь обратно к другой оболочке позволяет копировать и изменять разрешения двоичных

# cat /sdcard/sqlite3 > /system/bin/sqlite3
# chmod 4755 /system/bin/sqlite3

Теперь давайте монтироваться назад /system/ Как только для чтения (RO)

# mount -o remount,ro /system

И теперь мы можем использовать SQLite3 из оболочки:

# sqlite3 /data/data/com.telly/databases/fun.db
SQLite version 3.7.4
Enter ".help" for instructions
sqlite> .tables
android_metadata  lulz               

Примечание: Я использую бинарный SQLite3, который поставляется с «SUPERONECLICKV1.6.5-SHORTFURE»

Вы всегда можете тянуть sqlite3 Двоичный от эмулятора:

Начать эмулятор, а затем из терминала

$ adb pull /system/xbin/sqlite3

Если вы ленивы, как я, вы можете Скачать одно прямо здесь для ICS или до или для Желе бобы, а затем здесь

Обязательно используйте правильный для вашей версии Android, как вы можете получить eloc_library[1306]: 14446 cannot locate 'sqlite3_enable_load_extension'... или подобные ошибки на выполнении

От ответа Evelio у меня возникла проблема, чтобы нажать файл SQLite3 на / систему / bin. Итак, вместо этого я толкнул его к / SDCard.

В этой теме я нашел правильное решение (ответ в киле):Как я могу установить sqlite3 на укоретенные nexusone бежит прягу

$ adb push sqlite3 /sdcard/
$ adb shell
$ su
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# dd if=/sdcard/sqlite3 of=/system/bin/sqlite3
# chmod 4755 /system/bin/sqlite3
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system 

Он работает на моей Samsung Galaxy S II с 2.3.3.

Чтобы установить SQLite3 на нерусированные устройства, вот способ, которым было доказано, работая над моей Galaxy S3, Fyr.

$ adb -e pull /system/xbin/sqlite3  # get sqlite3 binary from emulator with the same CPU arch.
$ adb -d push sqlite3 /mnt/sdcard   # push it
$ adb -d shell
$ run-as <PACKAGE_NAME>             # run as your app, which should be debuggable.
$ cd databases; pwd
/data/data/<PACKAGE_NAME>/databases
$ cat /mnt/sdcard/sqlite3 > sqlite3 # copy it to internal storage directory
$ ls -l sqlite3
-rw-rw-rw- u0_a138  u0_a138     36860 2014-03-26 06:37 sqlite3
$ chmod 777 sqlite3                 # change mode bits, to be executable

$ ./sqlite3                         # now it works on your NON-ROOTED device
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

На Nexus 4 сделать следующее:

adb shell
$ su
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# dd if=/sdcard/sqlite3 of=/system/xbin/sqlite3
# chmod 777 /system/xbin/sqlite3
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

Обратите внимание, что папка / система / xbin и chmod 777

Еще одна информация, которая может помочь кому-то об этом вопросе

Для людей, которые задаются вопросом, где получить рабочий файл SQILTE3 BINARY для копирования:

Вы можете использовать эмулятор, чтобы получить рабочий бинар. Вы должны проверить, основана ли ваша сборка на основе _86, _64, или рука и повторить это изображение или вы можете получить несовместимую версию, которая приведет к ошибку.

Проверка, какая версия - ваше устройство Android

https://www.quora.com/how-can-i-Check-wheather-my-bandroid-phone-is-32-bit-biz-64-bit.

Строительная рука в Android Studio

Android Studio - Как я могу сделать AVD с рукой вместо Haxm?


Затем используйте приписки ниже, чтобы переместить файлы между вашим аппаратом и обратно на устройство Android.

Создание ADB записи

Android Emulator SDCard Push Ошибка: файловая система только для чтения

Копирование файлов из ADB на локальный аппарат устройства

Как скопировать выбранные файлы с Android с помощью ADB Pult

На укоретенном устройстве Nexus 4 эти ссылки с инструкцией на этой странице работали. Надеюсь, это поможет кому-то. Ключ - это необходимо подключить, чтобы получить разрешение на запись в устройстве через ADB.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top