43

私は Android アプリケーションをプログラミングしていますが、ここでの最良の方法は、一般的な Java と同じである場合とそうでない場合があります。

true に設定されている場合にコードの特定の部分のみを実行するデバッグ フラグを設定できるようにしたいだけです。C++ でプリプロセッサ #define DEBUG を設定し、#ifdef DEBUG を使用するのと同じです。

Javaでこれを達成するための受け入れられた、または最良の方法はありますか?

今は、Application オブジェクトに変数を設定するだけですが、これが最善の方法だとは思いません。

4

7 に答える 7

56

独自のフラグを使用する代わりに、次のように ADT によって自動的に設定されたフラグを使用できます。

final static int appFlags = context.getApplicationInfo().flags;
final static boolean isDebug = (appFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0

このFLAG_DEBUGGABLEビットは、アプリケーションの「デバッグ可能」属性 (AndroidManifest.xml で設定) に応じて、自動的に true または false に設定されます。ADT の最新バージョン (バージョン 8) では、署名済みパッケージをエクスポートしていないときに、この属性が自動的に設定されます。

したがって、独自のカスタム フラグの設定/リセットを覚えておく必要はありません。

このスレッドで詳細を読むことができます。

于 2010-12-29T15:42:54.720 に答える
31

それが私のやり方です:

// in some.class.with.Constants
public static final boolean DEV_MODE = true;

// in some other class
import static some.class.with.Constants.DEV_MODE;

if(DEV_MODE){
    Log.d('sometag', 'somemessage');
}
于 2010-04-27T05:04:18.510 に答える
26

SDK ツールのリビジョン 17 (2012 年 3 月) では、Cを模倣する方法が導入されました。#ifdef DEBUG

一般的な注意事項から:

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

于 2012-03-29T12:41:19.237 に答える
12

これは、 BuildConfigクラスif (BuildConfig.DEBUG)を使用してコードで機能します。これは、安全で簡単に実行できるコードです。このスタイルのコードを使用する場合は注意してください。リリース バージョンとデバッグバージョンの間で、コードの 2 つの異なるブランチが存在するように使用しないでください。これを行うと、リリース バージョンのアプリ テストが無効になる可能性があります。私にとっては、メッセージの呼び出しをスキップするためだけに使用しました。Log

このクラスの詳細については BuildConfig @ Build System Conceptsを参照してください。

于 2015-07-28T00:48:14.193 に答える
7
if ( Debug.isDebuggerConnected() ) {
  // debug stuff
}
于 2010-04-27T05:29:37.247 に答える
1

DEBUG コードを追加するよりも、テストを作成する方がよいと思います。

私のポイントは、コンポーネント/メソッド/クラスのテストを書くときに、冗長なデバッグ コードで元のソース コードを汚染しないということです。

于 2010-12-29T15:49:25.147 に答える