2

proguard.cfgアプリケーションがリリースされたときに物事を高速化し、CPU の無駄をなくすために、以下を含むものを単純にエクスポートできることを知っています。

-assumenosideeffects class android.util.Log {
    public static *** v(...);
    public static *** i(...);
    public static *** d(...);
    public static *** w(...);
    public static *** e(...);
}

しかし... デバッグ バージョンとリリース バージョンの間のジャグリングを便利に最小化する目的で (もう一方をインストールする前に常に完全なアンインストールが必要です)、USB 経由で接続せずにデバッグ バージョンを常に実行したい場合は、 Settings => Applications => Development => USB debugging uncheckedを使用すると、Log.v()、Log.i() などのいずれかが実行されますか?

USB経由でDDMSを接続してこれを自分で確認することはできません...だから、ヒントをありがとう。

4

2 に答える 2

2

ログ メッセージは引き続き内部ログ バッファに書き込まれます。

そして、このバッファを表示できるアプリがマーケットにいくつかあります。そのうちの 1 つは Android System Info などと呼ばれ、AFAIR と呼ばれます。

于 2011-10-16T17:45:26.373 に答える
1

ProGuardマニュアル( http://proguard.sourceforge.net/index.html#/manual/usage.html)によると:

-assumenosideeffects class_specification

(値を返す以外に)副作用のないメソッドを指定します。最適化のステップで、ProGuardは、戻り値が使用されていないと判断できる場合、そのようなメソッドへの呼び出しを削除します。ProGuardはプログラムコードを分析して、そのようなメソッドを自動的に見つけることに注意してください。ライブラリコードは分析されないため、このオプションが役立ちます。たとえば、System.currentTimeMillis()メソッドを指定して、そのメソッドへのアイドル状態の呼び出しがすべて削除されるようにすることができます。ProGuardは、指定されたメソッドの階層全体にオプションを適用することに注意してください。最適化する場合にのみ適用されます。一般に、仮定を立てることは危険な場合があります。処理されたコードを簡単に壊すことができます。このオプションは、自分が何をしているかを知っている場合にのみ使用してください。

したがって、Log.v()、Log.i()などの呼び出しはAPKにも存在しません。

于 2011-10-16T15:14:48.453 に答える