86

SQLite データベースを表示する必要がありますが、その方法がわかりません。http://www.sqlite.org/download.htmlにアクセスして、自分の OS 用のコマンド ライン シェルをダウンロードしましたが、プログラムを実行して入力するadb ...とエラーが発生します。

注: 私は Android Studio を使用しているので、余分なものをインストールする必要はないと思います。なぜなら、Android Studio には必要なすべての SDK ツールがあると言ったことを思い出したからです。

4

7 に答える 7

15

あなたが抱えている問題は一般的であり、ドキュメントでは十分に説明されていません。通常のデバイスには sqlite3 データベース バイナリが含まれていないため、エラーが発生します。Android エミュレータ、OSX、Linux (インストールされている場合)、および Windows (インストール後) にはバイナリがあるため、マシンでローカルにデータベースを開くことができます。

回避策は、データベースをデバイスからローカル マシンにコピーすることです。これは ADB で実現できますが、いくつかの手順が必要です。

開始する前に、次の情報が必要です。

  • SDK のパス (OS 環境に含まれていない場合)
  • <package name>たとえば、com.example.application
  • a<local path>データベースを配置します。~/Desktopまた%userprofile%\Desktop

次に、以下の例の最初の文字に各コマンドが書き込まれる端末を理解する必要があります。

  • >=あなたのOSコマンドプロンプト
  • $= ADB シェル コマンド プロンプト
  • != 管理コマンド プロンプトとしての ADB シェル
  • %

次に、ターミナルまたはコマンドから次のコマンドを入力します (最初の文字またはテキストを に入力しないでください()) 。

> adb shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit  (to exit sqldb)

これは、データベースをローカル マシンにコピーし、ローカルでデータベースを読み取るための非常に簡単な方法です。エミュレーターから sqlite3 バイナリーをデバイスにインストールする方法を説明する SO およびその他のリソースがありますが、一度だけアクセスすると、このプロセスが機能します。

データベースにインタラクティブにアクセスする必要がある場合は、(既に sqlite3 がインストールされている) エミュレーターでアプリを実行するか、デバイス /xbin path に sqlite をインストールすることをお勧めします。

于 2013-08-22T13:26:11.617 に答える
10
  1. ターミナルを開く
  2. cd <ANDROID_SDK_PATH>(Windowsの私にとってcd C:\Users\Willi\AppData\Local\Android\sdk
  3. cd platform-tools
  4. adb shell(これは、エミュレーターが 1 つしか実行されていない場合にのみ機能します)
  5. cd data/data
  6. su(スーパーユーザー権限を取得)
  7. cd <PACKAGE_NAME>/databases
  8. sqlite3 <DB_NAME>
  9. SQL ステートメントを発行します (重要:で終了します;。そうしないと、ステートメントは発行されず、代わりに新しい行に分割されます。)

注:ディレクトリの内容を一覧表示する必要がある場合は、ls(Linux) または(Windows) を使用します。dir

于 2017-01-08T19:52:08.237 に答える
4

デバイスによっては、adb シェルで sqlite3 コマンドが見つからない場合があります。その場合、これに従うことをお勧めします:

adb シェル

$ run-as package.name
$ cd ./databases/
$ ls -l #現在のパーミッションを見つける - r=4, w=2, x=1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull /data /data/package.name/databases/dbname.db ~/Desktop/
adb push ~/Desktop/dbname.db /data/data/package.name/databases/dbname.db
adb shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db #元の権限を復元
$ exit
$ exit

参照については、https://stackoverflow.com/a/17177091/3758972にアクセスしてください。

上記の手順を実行した後、「リモート オブジェクトが見つかりません」と表示される場合があります。次に、adb シェルでデータベース フォルダーの権限を 755 に変更します。

$ chmod 755 データベース/

ただし、Android バージョン < 21 でのみ動作することに注意してください。

于 2016-02-23T07:42:52.973 に答える