アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【AndroidWindows
Android実機からadbで取得したdbがERROR: database disk image is malformedになる場合の対処法
POSTED BY
2023-10-11

自分のアプリ内で動的にSQLを発行し作成したDBがあって、それをファイルとしてPCに取り出したい場合、adbコマンドを使う。

adbコマンドは

C:\Users\hogeuser\AppData\Local\Android\Sdk\platform-tools

にあるので、コントロール パネル→システムとセキュリティ→システム→システムの詳細設定→環境変数で、ユーザー環境変数Pathに上記パスを通しておくこと。

さて、アプリ内で作成したdbファイル名がtest.db、アプリパッケージ名がjp.co.example1155.testappであるとする。単純にそのDBファイルをローカルPCにコピーしようとすれば、

adb shell run-as jp.co.example1155.testapp cat databases/test.db > test.db

と打つのがシンプルに思われる。実際、ローカルにtest.dbファイルが保存される。

しかしこれをsqlite3で開こうとしたら、

ERROR: database disk image is malformed

と怒られてしまった。この場合の解決策は以下。コンソールに入ってsdcardへコピーしてからpullする。

adb shell run-as jp.co.example1155.testapp
cd databases
cat test.db /sdcard/test.db
exit
adb pull /sdcard/test.db test.db

こうすると何故か、同じローカルにできたtest.dbでも、今度はちゃんとsqlite3で開くことができた。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】