私は私のアプリでは、次のコードを持っている:Javaコンパイラは静的最終文字列を最適化しません。どうして?
public static final boolean DEBUG = true;
public static final boolean REL = !DEBUG;
private static final String DEBUG_OR_RELEASE = (REL) ? "RELEASE_VER" : "DEBUG_VER";
私は(ProGuardの経由でエクスポートしたとき)は、Javaコンパイラは、結果の.apkファイルから完全に"DEBUG_VER"
文字列を排除しますが、私はの.apkファイルを調べたときにすることを考えました、私はそこに "DEBUG_VER"文字列を参照してください。
なぜですか?私は何が欠けていますか?私は何を間違えたのですか?
"RELEASE_VER"が表示されないと思われる場合は、おそらくデバッグ用にコンパイルしていると思われますが、一般的にこのような最適化はデバッグモードでは無効になっています。 –
さらに、文が最適化されても、文字列リテラルが定数プールに残っている可能性があります。基本的に無害です。 –
'DEBUG_OR_RELEASE =(REL)? "DEBUG_VER": "DEBUG_VER" '?本当に?あなたの本当のコードを投稿してください。 – erickson