質問: ### 前提・実現したいこと Android StudioでKotlinを使ってアプリを制作しております。 /data/user/0/内に保存したファイルを**ダウンロード**し、 ファイルを開いて確認する事は可能でしょうか。 ### 発生している問題・エラーメッセージ Android StudioでSQLite・Roomを使い、 データベースの作成や、データの更新・参照テストを行なっています。 Roomを使い始めている段階なので、 更新に成功したかどうかのテストを行うだけでも 時間がかかってしまっている状態です。 そのため、できればデータベースのファイル(*******.db)をダウンロードし、 DB Browserなどで直接開いて確認したいと考えております。 データベースのファイルがどこに保存されているのかも 理解しきれていない状況ではあるのですが、 Logなどで確認したところ、/data/user/0/内にある可能性があったため、 そこを探してみたいと思いました。 Android Studio内にある「Device File Explorer」を使ったところ、 /data/data/**********/databases/に置かれているファイルは 参照・ダウンロード・削除ができたのですが、 同じようにして /data/user/0/内のデータを操作することはできますでしょうか。 ### 試したこと 「Device File Explorer」で /data/user/0/を探してみたのですが、 /data/の下には「app」「data」「local」の3フォルダしかありませんでした。 また、異なるエミュレータを見ている可能性も考えたのですが、 「Device File Explorer」で選択しているエミュレータに間違いはありませんでした。 ### 補足情報(FW/ツールのバージョンなど) MacOS High Sierraにて制作 Android Studio 3.4.1
回答: ターゲットが実機あるいはGoogle Playが利用できるエミュレーターであった場合、/dataの下はご質問の通りのディレクトリーしか閲覧できないでしょう。これはセキュリティ対策など汎用端末向けの実装であることの制約になります。 ただ、/data/data以下にあるファイルを取り出すことはできたのですよね?そして、その取り出せたデータベースファイルの内容は、意図した構造になっていたでしょうか?なっているのであれば、それで目的は達せられないのでしょうか? /data/user/0のようなディレクトリーは、マルチユーザー対応のために用意されています。大抵の端末では、「1番目のユーザー」である/data/user/0は、通常は/data/dataへのシンボリックリンクになっています。ですから、/data/data以下のファイルを取り出すことができたのなら、それは/data/user/0以下のファイルを取り出したのと同じ結果を得られているのではないかと思います。 どうしても/data/user/0という場所にアクセスしたければ、AVD Managerで新たなAVDを作成する操作を行い、2番目のSystem Imageという画面でx86 Imagesというタブを選択しましょう。この一覧の中に"(Google APIs)"という括弧書きがされたSystem Imageが存在するはずです(Playではないことに注意)。 !Google APIs System Imageの例 このSystem Imageを選択して作成したAVDならば、所謂root化された端末と同じように扱うことができるので、/data以下のディレクトリーの閲覧にも制約はありません。もちろん/data/user/0も視認できるはずです。 もし、System Imageを選択するときにそのImageがまだダウンロードされていないものであったならば、Downloadという部分がハイパーリンクになっているので、これをクリックしてダウンロードすることができます。