web-dev-qa-db-ja.com

adbシェルを使用してデータベースを開こうとすると、ルート化されたNexus Oneで「sqlite3:not found」エラーが表示されるのはなぜですか?

# sqlite3 /data/data/com.moodme.Android/databases/moodme
sqlite3 /data/data/com.moodme.Android/databases/moodme
sqlite3: not found
44
Julian A.

Androidエミュレーターで、sqlite3/system/xbinにあります。NexusOne(Android 2.2)には/system/xbinがありません。したがって、sqlite3はNexus Oneにインストールされていません。

21
CommonsWare

別の方法として(ただし、安全ではないかもしれませんが)、いつでも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               

: 「SuperOneClickv1.6.5-ShortFuse」に付属しているsqlite3バイナリを使用しています

いつでもsqlite3エミュレーターからのバイナリ:

エミュレーターを起動してからターミナルから

$ adb pull /system/xbin/sqlite3

あなたが私のような怠け者であれば、あなたは ICSまたはそれ以前 のためにここからダウンロードしてください==または Jelly bean以降

必ずAndroidバージョンに適切なものを使用してくださいeloc_library[1306]: 14446 cannot locate 'sqlite3_enable_load_extension'...または実行時の同様のエラー

92
eveliotc

Evelioの答えから、sqlite3ファイルを/ system/binにプッシュするのに問題がありました。そのため、代わりに/ sdcardにプッシュしました。

このスレッドで私は正しい解決策を見つけました(Kilaの答え): ルート化されたNexusOneにsqlite3をインストールする方法はGingerbreadを実行します

$ 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 

2.3.3のSamsung Galaxy S IIで動作します。

12
jiahao

Root化されていないデバイスにsqlite3をインストールするには、FYRのGalaxy S3で機能することが証明されています。

$ 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>
3
Jeremy Kao

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であることに注意してください。

2
vinzzz

この問題について誰かに役立つかもしれないいくつかの情報

作業用のsqilte3ファイルバイナリをどこからコピーすればよいか疑問に思う人のために:

エミュレータを使用して、作業用バイナリを取得できます。ビルドが_ 86、_64、またはARMに基づいているかどうかを確認する前に、このイメージを複製する必要があります。 。

自分のバージョンを確認するAndroid device

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

Building ARM in Android studio

Android Studio-ARMを使用してAVDを作成するにはどうすればよいですか?


次に、以下のメモを使用して、マシン間でファイルを移動し、Androidデバイスに戻します。

adbを書き込み可能にする

Android Emulator sdcard Push error:Read-only file system

adbからローカルデバイスマシンへのファイルのコピー

Android with adb pull)から選択したファイルをコピーする方法

根ざしたデバイスnexus 4では、これらのリンクがこのページの指示と連動していました。それが誰かを助けることを願っています。重要なのは、adb経由でデバイスに書き込み許可を取得するためにマウントする必要があるということです。

0
sivi