10

ルート化されていないデバイスでログ レベルを設定することはできますか? そのため、デバイスのログレベルを何らかの方法で「デバッグ」に変更したいと考えています。これはできることですか?

ルート化されていないため、setpropが機能するとは思いません。local.prop ファイルを変更する権限がないため、変更することもできません。

運が良ければ、ログレベルを含む隠しメニューを見つけることができます。他の方法でログ レベルを向上させる方法はありますか?

助けてくれてありがとう。

4

2 に答える 2

14

setprop:

  • ルート化された電話であっても、デバイスを再起動するまで一時的です。
  • local.propルート化された電話でのみ可能なプロパティを書き込むと、再起動してもプロパティを保持できます。
  • 一部のプロパティは読み取り専用で、一部の init ファイルを変更した場合にのみ変更できます。ルート化された電話では、それは不可能かもしれません.
  • 各デバイス (またはファームウェア) は、異なるプロパティ セットを持つことができます。ルート化された電話は、自動的にそれ以上になることはありません。

ログレベル:

  • ログを出力するコードがLog.d()「デバッグ」レベルになると言っている場合、コードを変更して再コンパイルしない限り、それを変更することはできません。Log.?レベルに関係なく実行すると、ログメッセージを非表示にするものは何もありません。
  • ファームウェアのリリース ビルドがある場合、Android フレームワークは一部のログ メッセージを非表示にします。これらを表示するには、ファームウェアをデバッグ ビルドとして再コンパイルする必要があります。ルート化された電話でもそれらを表示する機会はありません.
  • 一部のメッセージは、コード内のローカル変数によって制御されif (LOCAL_LOGV) Log.v(...ます。これらも表示するには、ここでコードを変更する必要があります。
  • 一部のメッセージはConfig.LOGV(= always false)によって制御されますConfigを参照してください。ここでも壊れた動作を変更する方法はありません。再コンパイルする必要があります。
  • プロパティを有効にするまで、他のいくつかのログメッセージは非表示になります。

public static final boolean DEBUG_SQL_CACHE =
Log.isLoggable("SQLiteCompiledSql", Log.VERBOSE); 

// somewhere in code
if (SQLiteDebug.DEBUG_SQL_CACHE) {
    Log.d(TAG, "secret message!");
}

そうした場合、adb shell setprop log.tag.SQLiteCompiledSql VERBOSEそれらのメッセージがポップアップ表示されるはずです。ログ#isLoggable()

私が知っているグローバルなログレベルはありません。

于 2012-04-24T07:33:10.703 に答える