logcatへのアクセスにはrootが必要ですか?


9

私のデバイスはすでにルート化されています。これが私が尋ねている理由です。

電話でlogcatストリームを監視するためにrootが必要ですか?電話のターミナルからlogcatコマンドを実行した場合、それは機能しますか?

回答:


15

マーケットにあるこれらの無料アプリは、logcatを表示できると主張しており、ルートについては言及していません。それらを試してみるのに数分しかかからないはずです:

編集:これらのアプリでは古いバージョンのAndroidでのみ完全なログファイルを表示できることを思い出させてくれた@menteに感謝します。Android 4.1は、ログファイルを中心とした新しいセキュリティモデルを導入しました。つまり、アプリは自分のログファイルとログファイルエントリのみを読み取ることができ、システムや他のアプリによって書き込まれたログファイルエントリを読み取ることはできません。

ただし、アプリのユーザーがアプリの最近のログエントリのログファイルを生成して開発者に送信する方法と、電話の所有者が完全なルートなしでアプリがログファイルを読み取ることを許可する権限を付与する方法の両方がありますが、これはADBコマンドを使用する必要がありますが、残念ながら、ほとんどの通常の電話ユーザーの手の届かないところにあります。

ユーザーにデバッグ情報を提供してもらいたい場合は、パワー+ボリュームダウン+ボリュームアップでログと他の多くのデータを含むバグレポートを生成し、自動的に電子メールアプリを起動してすべてを送信することができます。 (さらにスクリーンショット)。これらについても簡単に生成する方法があるはずだと話していたところですが、設定アプリに何かを追加する方法を見ていきます。

また、ログの読み取りが分類される「開発」権限の概念の導入も始めました。これにより、アプリは権限をリクエストできますが、インストール時に取得することはできません。ただしインストールしたら、adb shellコマンドを使用して付与でき ます。ある時点で、これを行うためのシステムにUIがあると予想しますが、これを保留して、これをどのように表示するかについて注意する予定です。

Android Framework EngineerであるDianne HackbornによるGoogleグループの投稿からの抜粋 私の強調。

アプリケーションにログの読み取り権限を付与する前述のADBコマンドは次のとおりです。

adb shell pm grant <pkg> android.permission.READ_LOGS

この設定は、アプリの再起動およびアップグレード後も存続します(アンインストール/再インストールはできません)。


Android 4.1以降、他のアプリのログを読み取るにはrootアクセスが必要です。CatLog開発者が説明を投稿しました。これらのアプリが4.1バージョン未満で動作すると仮定します
メンテ

1
このショートカットは私のAndroid 4.1.2では機能しません
メンテ2013

PCからログを収集するユーティリティを作成しました:gist.github.com/hrj/5983971
HRJ

4

あなたは実行するには、rootにお使いの携帯電話を必要としないadb logcatAndroidのSDKで、私はちょうど私の中でそれをテストしたターミナルエミュレータと私はルート(使用する必要がなかったsuコマンド-私の携帯電話はすでに根付いている)でlogcatを実行します私の電話の端末。

だからはい:あなたの電話にrootがあれば、あなたの電話のターミナルからlogcatを実行できます。


1

いいえ、logcat情報を取得するためにrootは必要ありません。

これを行うには、Android SDKをダウンロードして、SDKに付属のadbツールを使用して「adb logcat」を実行する必要があります。または、ADT Eclipseプラグインをインストールして、便利なストリーミングLogcatビューアを使用することもできます。


SDKを備えたリモートマシンからではなく、電話からこれを実行したい
Wulfbane

1

いいえ、logcatにアクセスするのにrootは必要ありません。私のデバイス(Samsung Galaxy Note、Gingerbread 2.3.6 with stock ROM)はルート化されていません(まだ!)。デバイスのログにアクセスするために次の方法を使用しました。

  • CatLogアプリ
  • aLogcatアプリ
  • SSHDroidアプリをアクティブ化し、SSHクライアントを使用してデバイス端末に接続しました
  • Android SDKの使用と実行 adb logcat

ただし、ターミナルアプリではlogcatを実行できず、「アクセスが拒否されました」と表示されます。理由はわかりません。


ええ、ジンジャーブレッドで...しかし、今日のAndroid ルートを必要とます。
NH。

1

端末にrootがなければ、ターミナルエミュレータからlogcatを実行できないようです。この場合、最初にsuを実行する必要があります。私の知る限り、それはAndroidのアクセス許可に由来します。ターミナルエミュレータには、デバイスのログを表示するための十分なアクセス許可がありません。したがって、システムは許可が拒否されたと言います。

一方、他の人が言ったように、許可を要求しただけでデバイスのログを表示できるアプリはたくさんあります。



0

Logcatはrootを必要としません。シンプル-さまざまなAndroidバージョンに関する全面的なデファクトスタンダードであり、ルート権限を取得しているかどうかに関係なく、Androidの一部であり、たとえば、アプリをインストールして、問題を診断するための標準的な手段です。アプリの強制終了、あなたはそのアプリの開発者に文句を言います、あなたがルート化されているかどうかに関係なく、開発者が「logcat経由で送信する」と尋ねる可能性はかなり高いです!

aLogCatは情報を収集する1つの方法です。Webページレイアウトまたはプレーンテキストにログを記録するオプションを使用して、15分ごとなどの特定の頻度でログを記録するようにスケジュールすると、SDカードがすぐにいっぱいになることに注意してください。

別の側面として、logcatの使用法は、それがどれだけ格納できるかという点でカーネルに依存します-ROMによって使用される任意のカーネルで、logcatサービス用にメモリを予約するカーネルレベルからのロギングのソースdrivers/staging/android/logger.cたとえば、適切な定義を使用して見つけることができます:

DEFINE_LOGGER_DEVICE(log_main、LOGGER_LOG_MAIN、64 * 1024)DEFINE_LOGGER_DEVICE(log_events、LOGGER_LOG_EVENTS、256 * 1024)DEFINE_LOGGER_DEVICE(log_radio、LOGGER_LOG_RADIO、64 * 1024)DEFINE_LOGGER_DEVICE(log_system、LOG_system、LOGGER_LOG_system、LOGGER

繰り返しますが、走行距離は異なります。そのようなROMの一部の開発者は、消費を最小限に抑えてメモリのオーバーヘッドを減らすことを選択します...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.