0

私の Java コードでは、Debugフラグを使用してデバッグ モデルを制御します。debug の場合、次のようないくつかの追加機能がありますactivity。アプリのバージョンを変更するために電話を表示する。コードを市場に公開するときに、これらのコードを消去したいと考えています。

以下のコードのように、コードを正常に実行する方法はありVersionSwitchService.classますnullか?

つまり、誰かが apk を逆コンパイルしても、VersionSwitchService.classコードは空白と見なされます。

if (isDEBUG) {
    VersionSwitchService.libStart(this, new LibVersionSwitch() {

        @Override
        public void versionSwitchToOnline() {
            //...
        }

        @Override
        public void versionSwitch(String version) {
            //...
        }
     });
}
4

1 に答える 1

1

あなたが作る場合isDebug final static

final static boolean isDebug = false;

Java コンパイラは、到達していないコードの部分を完全に削除します。あなたの例では、「then」部分は完全に省略されているため、apk では使用できません。

さらに、(リリース) apk ビルドを作成する場合、Android ツールは使用されていないすべてのメソッドとクラスを取り除きます。したがって、クラスがデバッグのみに使用される場合、(デバッグ定数VersionSwitchServiceの組み合わせにより) クラスは表示されません。static final

于 2013-01-25T09:52:41.387 に答える