android-emulator Androidデバイスのデータ/データフォルダにアクセスするには?



8 Answers

Android Studio 3.0以降のバージョンを使用している場合は、次の手順に従います。

  1. 表示 > ツールウィンドウ > デバイスファイルエクスプローラをクリックします
  2. / data / data / [パッケージ名]ノードを展開します。

デバッグモードで実行されるパッケージは、ルートされていないデバイスでのみ展開できます。

android android-emulator android-sqlite adb

私はアプリを開発していて、私のデータベース*.dbdata/data/com.****.***表示されることを知っていますdata/data/com.****.***

私はEclipseのAVDからsqlite managerの助けを借りてこのファイルにアクセスできます

しかし、私はAndroidの携帯電話でこのファイルにアクセスできません。
私はそれをgoogleし、私はそれを行うために私の携帯電話を根絶する必要があると言いますが、私はそれをしたくありません。 (新しい電話、保証の問題、セキュリティの問題)

だからここに私の質問です:どのように私のAndroidの携帯電話のdata/data/.....ディレクトリにアクセスすることができます " 根拠なし "?

ディレクトリdata/data.....ユーザー権限を根絶することなく変更できますか?




上記のいずれかを行うには(つまり、電話機自体から保護されたフォルダにアクセスする)、ルートが必要です。 (これには、/ dataフォルダーへのマウント許可の変更とそれへのアクセスが含まれます)

ルートなしでは、 /dataをコード内でアプリケーション内以外の場所に直接アクセスすることはできません。 だから、そのファイルをsdcardやどこかにアクセスできる場所にコピーしてみると、それを普通にアクセスできるはずです。

デベロッパーデバイスを使用している場合は、ルーティングによって保証が無効になることはありません。 申し訳ありませんが、AFAIKの方法はありません。




  1. コマンドプロンプトを開く
  2. ディレクトリをE:\ Android \ adt-bundle-windows-x86_64-20140702 \ adt-bundle-windows-x86_64-20140702 \ sdk \ platform-toolsに変更します。
  3. 以下のコマンドを入力してください
  4. adb -d shell
  5. run-as com.your.packagename cat databases/database.db > /sdcard/database.db
  6. ディレクトリをcd /sdcardに変更して、 database.dbがあることを確認しdatabase.db
  7. adb pull /sdcard/database.dbまたは単純にデバイスからdatabase.dbをコピーすることができます。



根っこのデバイスでは、正しい解決策は次のとおりです。

Open cmd
Change your directory and go into 'Platform tools'
Type 'adb shell'
su
Press 'Allow' on device
chmod 777 /data /data/data /data/data/*
Open DDMS view in Eclipse/IntelliJ and from there open 'FileExplorer' to get your desired file

元の解決策は機能しましたが、chmodは不明なディレクトリを返します。 chmodコマンドを/ data / data / *に変更すると、IntellijのDDMSからデータディレクトリ内のすべてのサブフォルダにアクセスできます。 Eclipse DDMSについても同じ解決策が当てはまると私は考えています。

更新それで、私が見つけたのは変です。 私はIntelliJ(Androidデバイスモニタ)でDDMSを使ってNexus 6を実行しています。 私は少しスターターアプリを構築しました。 上記のアプリはデータをdata / data / com.example.myapp / filesの.csvファイルに保存します

Nexus 6で初めてこのファイルにアクセスしようとしたとき、デバイスをルートにする必要があることがわかりました。データフォルダは表示されていましたが、開こうとすると機能しませんでした。 他の場所でオンラインで言及されているように、expand +はその後すぐに消えてしまいます(注意してください。これらのフォルダにアクセスすることを許可するソリューションがWeb上にあります。とにかく私が(私はむしろ私のソリューションを私に与えるために、アプリケーションやコマンドプロンプトに頼るよりも手動で行うことができると思います))をrootにしたくないかどうかはわかりません。 私は自分の6をルーツにして、もう一度DDMSを試しました。

この時点で、それは私にデータフォルダを示し、私はフォルダを展開し、comを見ることができた。 ディレクトリを開くことはできませんでした。 それは私が上記の解決策を発見したときです。 最初の指示はこの部分では機能しません:

chmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/*

それは私が投稿した解決策を試したときです:

chmod 777 /data /data/data /data/data/*

その解決策はうまくいくように見えましたが、特定のフォルダでのみ動作していました。 myappフォルダを展開することができましたが、ファイルディレクトリを展開できませんでした。

この時点で、私はしばらくの間、遊んだのですが、なぜこれらのワイルドカードエントリを試すのではなく、私が必要とするディレクトリで試してみるのか分かりません。

chmod 777 /data /data/data /data/data/com.example.myapp/*

に続く:

chmod 777 /data /data/data /data/data/com.example.myapp/files

これらのコマンドを使用すると、.csvが正しく保存されていることを確認するために、アプリケーションのディレクトリにあるファイルを展開して表示することができました。

これが誰かを助けることを望みます。 私はこれと数時間苦労しました!

(これ以上奇妙なことにコンパイルすると、ファイルディレクトリに渡された.csvファイルにアクセス権が渡されなかった。myファイルディレクトリのアクセス権はdrwxrwxrwxとlog.csvファイルの読み取り権を読み取る。-rw-rw --- - ..ただfyi)




Androidからデスクトップにバックアップする

コマンドラインcmdを開き、次のコマンドを実行してください:adb backup -f C:\ Intel \ xxx.ab -noapk your.app.package 。 パスワードを入力せずに[自分のデータをバックアップする]をクリックしてください。 ドライブCのルートに保存しないでください。 あなたは否定されるかもしれません。 これが私がC:\ Intelに保存した理由です。

* .abファイルを抽出するには

  1. ここをクリックしてダウンロードしてhttps://sourceforge.net/projects/adbextractor/https://sourceforge.net/projects/adbextractor/ : https://sourceforge.net/projects/adbextractor/
  2. ダウンロードしたファイルを抽出し、抽出したフォルダに移動します。
  3. これを独自のファイル名で実行してください: java -jar abe.jar c:\ Intel \ xxx.ab c:\ Intel \ xxx.tar



adb backupは私のためには機能しませんでしたので、ここで私がしたことがあります(Xiaomi Redmi Note 4X、Android 6.0):
1. 設定>追加設定>バックアップとリセット>ローカルバックアップに進みます。
2.画面の下部にある[バックアップ]をタップします。
3.「システム」と「アプリ」のチェックマークを外します。
4. [アプリ]セルの右側にある詳細開示ボタンをタップして、アプリ選択画面にナビゲートします。
5.目的のアプリを選択し、[OK]をタップします。
6.バックアップが完了したら、実際のファイルを何らかの方法で配置する必要があります。 私のものは/ MIUI / backup / AllBackup / _FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_にあります。
7.その後、 が実際にバックアップファイル(私の場合は.bak)をtar(元の回答から複製)に変換するための手順を実行しました。
"
a)ここにhttps://sourceforge.net/projects/adbextractor/ダウンロードしてhttps://sourceforge.net/projects/adbextractor/https://sourceforge.net/projects/adbextractor/ : https://sourceforge.net/projects/adbextractor/
b)ダウンロードしたファイルを抽出し、抽出したフォルダに移動します。
c)あなた自身のファイル名でこれを実行してください:java -jar abe.jar unpack c:\ Intel \ xxx.ab c:\ Intel \ xxx.tar
"




問題は、どのようにアクセスデータデータフォルダのアンドロイドデバイスですか?

android-deviceがBluestacksの場合*ルートブラウザAPKはデータ/データ/を表示します。

https://apkpure.com/root-browser/com.jrummy.root.browserfreeからルートブラウザをダウンロードしてみてhttps://apkpure.com/root-browser/com.jrummy.root.browserfree

ファイルが "Open as"、 "Text file"、 "Open as"、 "RB Text Editor"をクリックする必要があるテキストファイルの場合は、




また、パブリックフォルダであるSDカードフォルダにファイルをコピーしてから、PCにファイルをコピーしてsqliteを使ってアクセスすることもできます。

ファイルをデータ/データからパブリックストレージフォルダにコピーするために使用できるコードは次のとおりです。

private void copyFile(final Context context) {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath =
                    context.getDatabasePath(DATABASE_NAME).getAbsolutePath();

            String backupDBPath = "data.db";

            File currentDB = new File(currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

マニフェスト:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />



Related