私は Android Studio を使って、それがリリースされてから私のアプリを開発してきました。
最近まで、データベースファイルをチェックしながらデバッグする必要がありました。データベースを直接見る方法がわからないので、データベースファイルを生成するためにデバッグしたときには、データベースファイルを自分の電話機からPCにエクスポートする必要があります。
これを行うには、DDMS > File Explorer
を開く必要があります。 DDMSを開くと、USBを再接続する必要があり、デバッグスレッドがなくなります。データベースファイルを確認したら、DDMSを閉じてUSBを再接続してデバッグモードに戻る必要があります。
複雑すぎます。誰もがAndroid Studioでこれを実行するためのより良い方法を持っていますか(私はそれがEclipseでより簡単であることを知っています)?
最後に、DDMSを開く必要のない最も簡単な解決策を見つけました。
実際には、解決策は@Distwoが述べたことに基づいていますが、それほど複雑である必要はありません。
まず 、デバイス内のデータベースファイルのパスを覚えておいてください。例えば私のものは:/data/data/com.XXX.module/databases/com.XXX.module.database
第二 、あなたのPCにあなたのデータベースファイルを引っ張るこのコマンドを実行する
adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/
あなたがする必要があるのは単にこのコマンドをコピーして保存することです、そしてあなたはそれを何度も何度も使うことができます。
第3 、もしあなたがPermission Deniedかそのようなものを持っているのなら、前のコマンドの前にadb root
を実行してください。
編集:エミュレーターでデータベースを表示するには、次の手順を実行します(実際のデバイスの場合は、一番下までスクロールします):
データベースをデバイスからPCにコピーします。
Android Studioバージョン<3.:
開くDDMS via Tools > Android > Android Device Monitor
デバイスをクリック左側。
アプリケーションが表示されます。
File Explorer(右側のタブの1つ)に移動し、/data/data/databases
に移動します
データベースを選択クリックするだけです。
Android Device Monitorウィンドウの右上隅に移動します。 「ファイルをプル device」ボタンをクリックします。
データベースファイルを保存する場所を尋ねるウィンドウが開きます。 保存 PCの任意の場所。
Android Studioバージョン> = 3.0:
開くデバイスファイルエクスプローラー経由でView > Tool Windows > Device File Explorer
data > data > PACKAGE_NAME > database
に移動します。PACKAGE_NAMEはパッケージの名前です(上記の例ではcom.Movieです)
データベースを右クリックして、Save As...
を選択します。 保存 PCの任意の場所。
ここで、インストールしたSQLiteBrowserを開きます。 「open database」をクリックし、データベースファイルを保存した場所に移動して、openを選択します。これで、データベースの内容を表示できます。
this Githubリポジトリに移動し、readmeの指示に従って、デバイスでデータベースを表示します。あなたが得るものは次のようなものです:
それでおしまい。ただし、アプリを公開する前にこれらの手順をすべて元に戻す必要があることは言うまでもありません。
私はAndroid Studioでそれを実行する方法を見つけることはできませんでしたが、私は毎回ファイルを取得するのではなく、リモートシェルでdbにアクセスします。
ここにすべての情報を見つける: http://developer.Android.com/tools/help/adb.html#sqlite
1 - コマンドプロンプトであなたのplatform-toolsフォルダに移動します
2-あなたのデバイスのリストを取得するためにコマンドadb devices
を入力してください
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx device
3-あなたのデバイスにシェルを接続します。
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx Shell
4 - あなたのDBファイルを含むフォルダに移動します。
cd data/data/<your-package-name>/databases/
5-あなたのdbに接続するためにsqlite3を実行します。
sqlite3 <your-db-name>.db
6-好きなsqlite3コマンドを実行してください。
Select * from table1 where ...;
注: 以下で実行するコマンドをもっと見つけてください。
SQLiteデータベースのテーブルを見るためのいくつかのステップがあります。
データベース内のテーブルを一覧表示します。
.tables
テーブルの外観を一覧表示します。
.schema tablename
テーブル全体を印刷します。
SELECT * FROM tablename;
利用可能なすべてのSQLiteプロンプトコマンドを一覧表示します。
.help
エミュレータを使用しない場合の最も簡単な方法
$ adb Shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name
私はしばらくの間これをテストしていません。 API 25以上では動作しない可能性があります。 cpコマンドがうまくいかない場合は、代わりに次のいずれかを試してください。
# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>
# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name
最初のブロックはあなたのデータベースのパーミッションが読めるように設定します。これはrun-as
を利用して、あなたはあなたのパッケージのユーザを偽装して変更を加えることができます。
$ adb Shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the Shell started with run-as
次に、データベースを世界的に読み書き可能なディレクトリにコピーします。これにより、adb pullユーザーアクセスが許可されます。
$ cp /data/data/your.package.name/databases/database_name /sdcard
次に、既存の読み取り/書き込み権限を置き換えます。これはアプリのセキュリティ上重要ですが、次回のインストール時に特権が置き換えられます。
$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the Shell started with run-as
最後に、データベースをローカルディスクにコピーします。
$ exit # Exits Shell on the mobile device (from adb Shell)
$ adb pull /sdcard/database_name
私は実際には誰もがこの解決策を与えていないことに非常に驚いています。
Stetho をご覧ください。
私はさまざまな目的でStethoを何度か使用しました(その1つがデータベース検査です)。実際の ウェブサイト で、彼らはまたネットワーク検査とビュー階層を通して見るための機能について話します。
1つのグラドル依存関係の追加(本番ビルドではコメントアウトできます)、Stethoをインスタンス化するための数行のコード、およびChromeブラウザ(すべてにChrome開発ツールが使用されているため)が必要です。
更新 :Stethoを使ってRealmファイルを閲覧できるようになりました(SQLite DBの代わりにRealmを使っている場合): https://github.com/uPhyca/stetho-realm
Update#2 :Stethoを使ってCouchbaseのドキュメントを閲覧できるようになりました: https://github.com/RobotPajamas/Stetho-Couchbase
更新#3 :FacebookはStethoのすべての機能を新しいツールFlipperに追加することに力を注いでいる。 FlipperはStethoが持っている多くの機能を既に持っています。それで、今は切り替えをする良い時期かもしれません。 https://fbflipper.com/docs/stetho.html
このAndroidスタジオプラグインを試してみてください SQLScout 。アプリデータベースをリアルタイムで表示および編集できます。
編集: これは有料のプラグインですが、24時間トライアルで頭痛の時間に適しています。
すべての解決策を通過した後に私はお勧めします
Stethos を使う
それがいかに単純であるか見てみましょう
Build.gradleファイルに以下の依存関係を追加します。
compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
次にmainActivity onCreateメソッドを使用して以下の行を追加します。
Stetho.initializeWithDefaults(this);
これはあなたを必要とするでしょう
import com.facebook.stetho.Stetho;
androidスタジオ、Open Chrome、およびアドレスバータイプからアプリを実行中
chrome:// inspect/
[リソース]タブ> [Web SQL]で、データベースとテーブルの再生をリアルタイムで簡単に確認できます。
SqliteデータベースがAndroid Studioであなたによって作成された場所を知るためには、簡単な手順に従う必要があります。
1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.
詳細については、このリンクが役立ちます。 http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-Android-studio/
Dbファイルに存在するデータを表示するには、sqliteブラウザをダウンロードするか、ブラウザに同じプラグインを追加する必要があります。そのため、ブラウザでファイルを開き、データを表示する必要があります。
http://sqlitebrowser.org/ からブラウザをダウンロードしてください。
これは登録データベースを含むブラウザを示すスクリーンショットです。
ありがとう、
最も簡単な方法は、デバイスを接続してAndroid Studioを起動し、次にツールバーから実行することです。
別の方法はStethoライブラリを使うことです。
Build.gradleにStello依存関係を追加します。
'com.facebook.stetho:stetho:1.5.0'をコンパイルしてください。
アプリケーションクラスのonCreate()またはメインアクティビティに次の行を追加します。
Stetho.initializeWithDefaults(this);
デバイスを接続してアプリを実行し、Chromeで次のサイトに入ります。
chrome:// inspect /#devices
それがそれです。今すぐあなたのテーブルを探索することができます。
注:本番に移行する前に依存関係を削除することをお勧めします。
Android Studioの下部にあるDevice File Exploreターミナルを開きます。
という名前のフォルダ データ その後、データ内でフォルダをもう一度開きます。 データ 。
フォルダーのリストを下にスクロールして、 your.package.nameでフォルダーを見つけます。 フォルダを開く your.package.name > データベース 。 your.databaseName となります。 your.databaseName を右クリックし、C:/ your/Computer/Directoryに名前を付けて保存します。
Cに移動します:/あなたの/コンピュータ/ディレクトリオープン your.databaseName with DB SQLite
Android Studio 3.Xの場合
これはSQLite Studioへのリンクです: https://sqlitestudio.pl/index.rvt?act=download
私は質問がかなり古いことを知っていますが、この問題はまだ存在していると思います。
Androidアプリプロジェクトにlibとして統合できる開発ツールを作成しました。このツールは、アプリでサーバーソケットを開き、Webブラウザー経由で通信します。データベース全体を閲覧し、ブラウザから直接データベースファイルをダウンロードできます。
統合は、jitpack.ioを介して実行できます。
プロジェクトbuild.gradle:
//...
allprojects {
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
}
//...
アプリbuild.gradle:
//...
dependencies {
//...
debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
//...
}
//...
特定のビルドタイプまたは製品フレーバーでDebugGhostLibのみをコンパイルするには、特別なフレーバーで派生する抽象Applicationクラスが必要です。次のクラスをmain
フォルダー(Java
> your.app.package
の下)に配置します。
public class AbstractDebugGhostExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Do your general application stuff
}
}
リリースビルドタイプ(または製品フレーバー)の場合、次のApplicationクラスをrelease
(または製品フレーバー)フォルダー(Java
> your.app.package
の下)に追加します。
public class MyApp extends AbstractDebugGhostExampleApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
これは、DebugGhostLibをnot参照するアプリケーションクラスです。
また、独自のアプリケーションクラスを使用していることをAndroidManifest.xml
に伝えます。これはmain
フォルダーで行われます:
<manifest package="demo.app.Android.sanid.com.debugghostexample" xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- permissions go here -->
<application Android:name=".MyApp"> <!-- register your own application class -->
<!-- your activities go here -->
</application>
</manifest>
ここで、デバッグビルドタイプ(または製品フレーバー)について、次のApplicationクラスをdebug
(または製品フレーバー)フォルダー(Java
> your.app.package
の下)に追加します。
public class MyApp extends AbstractDebugGhostExampleApplication {
private DebugGhostBridge mDebugGhostBridge;
@Override
public void onCreate() {
super.onCreate();
mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
mDebugGhostBridge.startDebugGhost();
}
}
tool here を取得できます。
私はwindows 7を使用しています、私のデバイスはエミュレートされたAndroidデバイスAPI 23です。
[ツール] - > [Android] - > [Android Device Monitor]に移動します。ファイルエクスプローラに移動します。私の場合は、data/data // app_webview/databases/file_0/1にあります。
"1"という名前のファイルの末尾に手動で.dbを追加する必要があります。
私はデータベースを電話からPCに引っ張らなければなりませんでした。今、私は多くの機能を持っているこの非常によくできていて無料のアプリを使います。それは Rooted deviceでAPI 4.1+
上で動作します。
rootなしで動かす方法を見つけたら教えてください。
https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime
これは非常に古い質問です、そして私の答えは上のいくつかの答えに似ていますがはるかに速くしました。下記のスクリプトはMac用ですが、誰かがWindows用に修正できると確信しています。
1)Mac上でScript Editorを開きます(SpotlightでScript Editorを検索できます)。
2)以下のテキストをコピーして貼り付け、SDKのパス、パッケージ名などを使用して変更します(下記参照)。
3)スクリプトを保存してください。
それはそれだ!上部にある再生ボタンを押すだけで、更新されたデータベースファイルがデスクトップに表示されます。
以下のスクリプトで以下のものを置き換えます。
path_to_my_sdk == >>あなたのsdkへのフルパスを入れる
my_package_name == >>アプリケーションのパッケージ名
myDbName.db == >>データベースのファイル名
set getLocalDb to "path_to_my_sdk/platform-tools/adb Shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb Shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb Shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do Shell script getLocalDb
これが誰かに役立つことを願っています。
プラスと他の答えからのその組み合わせ
私はこのプロセスのunixコマンドライン自動化をまとめて、ここにコードを入れました:
https://github.com/elliptic1/Android-Sqlite3-Monitor
これは、パッケージ名とデータベース名をパラメータとして受け取り、接続されているAndroidデバイスからデータベースファイルをダウンロードし、ダウンロードしたファイルに対してカスタムスクリプトを実行するシェルスクリプトです。それから、 'watch'のようなunixツールを使うと、ターミナルスクリプトウィンドウを開いてデータベーススクリプトの出力を定期的に更新することができます。
これはあなたが探している答えではないかもしれませんが、私は電話からDBをダウンロードするためのより良い方法を持っていません。私が提案するのは、このミニDDMSを使用していることを確認することです。あなたがプログラムの一番下の左の非常に小さいcamoflageボックスをクリックしないなら、それは非常に隠されるでしょう。 (そうでなければあなたはそれを見逃すかもしれません)
ドロップダウンリストにはフィルターがありません(右上)。それは文字通りあなたがPPID、名前、そしてもっとたくさんのものによってあなたが異なるプロセス/アプリを監視することができる異なる方法のトンを持っています。私はいつも電話を監視するためにこれを使っていました、しかし私はデータベースが普通のことから何かをしていない120%の肯定的である必要があるタイプの開発作業をしていないことを覚えておいてください。
それが役に立てば幸い