13

Android のドキュメント ( http://developer.android.com/reference/android/util/Log.html ) は次のように述べています。

Verbose は、開発中以外はアプリケーションにコンパイルしないでください。デバッグ ログはコンパイルされますが、実行時に削除されます。エラー、警告、情報ログは常に保持されます

私はちょうどテストをしました。私の活動で私は書いた:

private static String test(String what) {
    Log.e("test", "I am called with argument: " + what);
    return what;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.v("test", "log level: " + test("v"));
    Log.d("test", "log level: " + test("d"));
    Log.i("test", "log level: " + test("i"));
    Log.w("test", "log level: " + test("w"));
    Log.e("test", "log level: " + test("e"));
}

プロジェクトを apk ファイルとしてエクスポートし、この apk を携帯電話にインストールしました。このアプリケーションを携帯電話で実行してから、ログを調べました。ここで、関数テストが 5 回すべて呼び出され、Log.something 関数への 5 回すべての呼び出しで、そのテキストがログに書き込まれることがわかりました。

では、Log.d 呼び出しは実行時に本当に取り除かれるのでしょうか?

4

3 に答える 3

14

いいえ。これは自分で行う必要があります。次のように、独自のLog.dラッパーを作成できます。

public static void debug(String tag, String msg) {
    if (BuildConfig.DEBUG) {
        Log.d(tag, msg);
    }
}
于 2013-03-06T04:02:26.093 に答える
6

この問題はここで報告され、 2012 年 3 月にADT 17.0.0で解決策が提供されました。

一部のコードをデバッグ モードでのみ実行できる機能を追加しました。ビルドは、ビルド タイプに応じて自動的に設定される DEBUG 定数を含む BuildConfig というクラスを生成するようになりました。コード内の (BuildConfig.DEBUG) 定数をチェックして、デバッグ専用関数を実行できます。

于 2013-03-06T05:11:37.970 に答える