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

# sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3 /data/data/com.moodme.android/databases/moodme
sqlite3: not found

6 ответов


на эмуляторе 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) на where sqlite3 есть и позволяет нажать его

$ ls
sqlite3
$ adb push sqlite3 /sdcard/

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

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

теперь давайте монтировать обратно /system/ как прочитанные только (РО)

# mount -o remount,ro /system

и теперь мы можем использовать sqlite3 из shell:

# 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-ShortFuse"

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

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

$ adb pull /system/xbin/sqlite3

если вы ленивы, как я, вы можете скачать один прямо здесь для ICS или до или для Jelly Bean и позже здесь

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


из ответа evelio у меня была проблема с нажатием файла sqlite3 в /system/bin. Поэтому вместо этого я подтолкнул его к /sdcard.

в этом потоке я нашел правильное решение (ответ Kila): как я могу установить 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

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


больше информации, которая может помочь кому-то об этой проблеме

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

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

проверка, какая версия вашего android устройство

https://www.quora.com/How-can-I-check-whether-my-Android-phone-is-32-bit-or-64-bit

строительство ARM в Android studio

Android Studio-как я могу сделать AVD с ARM вместо HAXM?


Затем используйте Примечания ниже для перемещения файлов между компьютером и обратно на устройство android.

сделать adb доступным для записи

Android эмулятор sdcard push ошибка: файловая система только для чтения

копирование файлов с adb на локальное устройство

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

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