201

adb と次のコマンドを使用してライブ デバイスに接続しました。

C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied

アクセスが拒否されたことに驚きました。このようなコマンドラインを使用してディレクトリをブラウズできないのはなぜですか?

電話でルートアクセスを取得するにはどうすればよいですか?

4

15 に答える 15

240

API レベル 8 (Android 2.2) 以降、デバッグ可能なアプリケーション (リリース ビルドが要求されない限り、常に Android Studio によってビルドされるアプリケーション) では、シェルrun-asコマンドを使用して、特定のユーザー/アプリケーションとしてコマンドまたは実行可能ファイルを実行できます。または、アプリケーションのUIDに切り替えて、そのデータディレクトリにアクセスできるようにします。

アプリのディレクトリ コンテンツを一覧表示します。

run-as com.yourapp ls -l /data/data/com.yourapp

com.yourappの UID に切り替え、その uid を使用して以降のすべてのコマンドを実行します ( を呼び出すまでexit):

run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit

 
注 1 :一部の HTC Desire フォンには既知の問題があります。/data/dataディレクトリの非標準の所有者/権限が原因でrun-as、これらの電話機でコマンドを実行できません。

注2:@Avioのコメントで指摘されているように: run-asこのプラットフォーム/data/dataでは/datadata. この問題を解決する 1 つの方法は、シンボリック リンクを実際のディレクトリに置き換えることです (残念ながら、これには通常、ルート アクセスが必要です)。

于 2011-10-10T11:35:15.340 に答える
151

デバイス上のすべてをブラウズしたい場合、覚えておくべきことが 2 つあります。

  1. Android フォンでデータ フォルダを参照するには、ルート アクセス権を持つ電話が必要です。これは、開発者用デバイス ( ADP1または Google I/O のION ) を持っているか、別の方法で電話を「ルート化」する方法を見つけたことを意味します。
  2. root モードで ADB を実行する必要があります。これを実行するには、次のコマンドを実行します。adb root
于 2009-06-25T12:50:31.737 に答える
57

始める前に、ルート化された電話をお持ちですか? そうでない場合は、ジャンプする時が来たことを強くお勧めします。これを行うのに役立つチュートリアルの99%では、ルート化された電話が必要です(ルート化された電話がなくてもそれを行う方法を探すのに約1時間費やしたことは知っています..何も見つかりませんでした.. ) また、考えてみれば、これと同じタスクを実行するには、iPhone もルート化する必要があります。したがって、それは完全に合理的です。回答の最後にある応援についての詳細。

コマンドラインから次のように入力します。

adb shell

これにより、Android シェル コマンド ラインが表示されます (次のように表示されるはずです。次のようにshell@android:/ $入力します。

shell@android:/ $run-as com.domain.yourapp

これにより、次のデータ ディレクトリに直接移動できますcom.domain.yourapp

shell@android:/data/data/com.domain.yourapp $ 

そうでない場合 (つまり、エラーが発生した場合) は、root 化された電話を持っていないか、root ユーザー権限を使用していない可能性があります。ルート ユーザー権限を使用するsuには、adb コマンド ラインに入力して何が起こるかを確認します。エラーが発生した場合は、電話がルート化されていません。そうでない場合は、最初にルート化してから、これらの手順を続行してください。

そこから入力するlsと、dbs を含むすべてのディレクトリが表示されます。

shell@android:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

その後、sqlite3 を使用して dbase をブラウズできます。インストールしていない場合 (入力して見つけることができますsqlite3。取得command not foundした場合は、インストールする必要があります。sqlite をインストールするには、こちらの手順に従ってください。

ルート化について:これまで電話をルート化したことがなく、電話が台無しになるのではないかと心配している場合は、心配する必要はないと自信を持って言えます。そこには、新旧のほとんどすべてのモデルに対応する、すばやく簡単な電話ルート化チュートリアルがたくさんあります。また、Mac を持っている場合でも電話をルート化できます(私は自分の s3 を自分の Mac でルート化しました)。

于 2013-06-25T13:25:19.423 に答える
52

$ adb シェル

$ cd /データ

$ ls

opendir に失敗しました。権限が拒否されました


これを行う必要があります:

$ adb shell

$ cd /data

shell@android:/data $ run-as com.your.package 

shell@android:/data/data/com.your.package $ ls

わかった!

于 2015-03-06T03:13:32.467 に答える
31

ルート権限を取得されたSamsungGalaxySで操作しようとしたときに、同様の問題が発生しました。コンピューターシェルからコマンドを発行する

> adb root

「本番ビルドではrootとして実行できません」というメッセージで失敗します。これがrootになるための簡単な方法です。

前のコマンドの代わりに、次の2つのコマンドを次々に発行します

> adb shell
$ su

最初のコマンドの後、プロンプトが上記のように「>」から「$」に変わった場合は、adbシェル環境に入ったことを意味します。その後、2番目のコマンドを発行した後にプロンプ​​トが「#」に変わった場合は、これでrootになったことを意味します。これで、rootとして、デバイスでやりたいことが何でもできます。

「安全な」シェルに戻すには、

# exit

プロンプト「$」が再表示されます。これは、rootではなくユーザーとしてadbシェルにいることを意味します。

于 2012-04-05T12:49:55.060 に答える
19

これには私もかなり悩みました。私はまだアクセス許可とルートの実行を完全には理解していませんが、これは /data/data/[package name]/databases/my_db.db からデータベースファイルをコピーするのに役立ちました(以前の回答の1つ)。何らかの理由でshell rootまたはsuをシェルで実行しても機能しませんでした。また、db ファイルをコピーしても (ディレクトリに移動することはできました)、sqlite3も機能しませんでした。

それで、これはうまくいきました!DOS コマンド プロンプトの場合:

C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|shell@android:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|shell@android:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
shell@android:/data $ cd data
cd data
shell@android:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
shell@android:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ cat bus
_timetable_lines.db > /sdcard/db_copy.db
 bus_timetable_lines.db > /sdcard/db_copy.db                                   <
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $exit   ^
exit
shell@android:/ $ exit
exit

C:\Program Files\Android\android-sdk\platform-tools>

SDCARD ディレクトリに移動し、ファイル db_copy.db を取得します。それも隠していたのですが、なんとかメールできました。Windows に戻って、SQLite Database Browser で db ファイルを開くことができました。:)

于 2012-05-11T18:24:15.670 に答える
3

root アクセスを取得するための 2 つの手順は次のとおりです。

  1. Android デバイスはルート化されている必要があります。
  2. ADB シェルで su と入力すると、Android デバイスは y/n? と入力します。許可を選択します。
于 2012-10-08T11:45:19.563 に答える
2

問題は、最新の CM の開発オプションで明確に adb root アクセスを許可する必要があることです。これが私がしたことです。

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server * デーモンが実行されていません。ポート 5037 で今すぐ開始 * * デーモンが正常に開始されました * root アクセスはシステム設定によって無効にされています - 設定で有効にします -> 開発オプション

開発オプションを変更した後...

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
abc@abc-L655:~$ adb shell
root@android:/ # ls /data/ .... good to go.. 
于 2013-06-02T02:01:27.603 に答える
2

本番ビルドは /data/app に入ることができません

drwxrwx--- system   cache             1970-01-01 08:00 cache
drwxrwxr-x root     system            1970-01-01 08:00 mnt 
drwxrwx--x system   system            1970-01-01 08:15 data

操作するには、権利所有者の変更が必要になる場合があります。

于 2011-01-07T02:23:22.310 に答える
1

アプリケーション パッケージがわかっている場合は、cdそのフォルダに直接アクセスできます。

例えば cd data/data/com.yourapp

read/writableこれにより、必要に応じてファイルを変更できるディレクトリにドロップされます。フォルダは と同じなので、emulatorそれを使用してフォルダ パスを取得できます。

于 2009-12-31T10:50:49.483 に答える
-5

デバイスのシェル ディレクトリにいるとき。とにかく走れ

su - root

その後、data/ フォルダーにアクセスできるようになります。

于 2013-10-02T11:26:03.057 に答える