0

私はAndroidとJavaの初心者です。C/C++ / C#の経験が豊富です。

私は次のようなインターフェースを持っています:

class WellNamedClass {
    void greatMethodToCallWhenever() { /*...*/ }

    void debugOnlyMethod() { /*...*/ }
}

上記の言語では、debugOnlyMethodメソッド全体を#ifdefするか、実装を#ifdefするので、何も実行されませんが、Javaにはプリプロセッサがありません。

そこにコードを配置し、実行時にデバッグビルドを実行しているかどうかを確認することに完全に満足していますが、その方法を見つけることすらできません。

デバッグ(またはその他の必要なもの)が有効になっているかどうかを示す定数を使用してクラスを作成する、このような提案を見つけました。これは機能する可能性がありますが、デバッグとリリースビルドを取得するには、コードを手動で変更する必要があります。

他の誰かがこの問題を解決しましたか?ありがとう。

4

3 に答える 3

0

これは機能する可能性がありますが、デバッグとリリースビルドを取得するには、コードを手動で変更する必要があります。

-D一般的なアプローチの1つは、フラグを使用してシステムプロパティをVMに渡すことです。System.getProperty次に、直接使用するかstatic field、そのプロパティからを初期化できます。

System.getenvまた動作します。

于 2012-05-17T20:56:54.953 に答える
0

なぜこれが必要なのかわかりませんが、ところで、次のような静的グローバル変数を配置できます。

class WellNamedClass{

public static final boolean DEBUG = true;
...
}

そして、次のようなifステートメントを使用してデバッグメソッドを確認します。

if(WellNamedClass.DEBUG){
    debugOnlyMethod();
}

Javaから始めて、これで遊ぶことができます。

より多くの経験を積んだら、注釈、aop、またはその他の高度なプログラミング手法を試すことができます。

于 2012-05-17T20:53:04.943 に答える
0

使用する方法は、ネイティブコンポーネントへのJNI呼び出しで、デバッグモードで実行しているかどうかを通知する方法だと思います。とにかくネイティブコンポーネントが必要であり、起動時にいくつかのJNI呼び出しを行うため、C ++にはプリプロセッサがあるため、比較的単純なソリューションになります。

于 2012-05-26T04:05:54.233 に答える