EclipseからAndroid Studio移行ではまったところメモの後に発生した問題。
ログコードをproguard時に削除する
Eclipseでログコードをproguard時に削除していた。
随所にコードが散らばっているので今頃といえば今頃だけど、削除するコードはこんな感じ。
#-dontoptimize
-assumenosideeffects class android.util.Log {
public static int v(...);
public static int d(...);
public static int i(...);
public static int w(...);
public static int e(...);
}
// カスタムロッガーの場合は全部消してしまう。
-assumenosideeffects class com.shiraji.Logger {
<methods>;
}
で、それをEclipseではやっていたのだけど、いざ、Android Studioでやってみたら、ログが出力されてた。
デコンパイルしてソースみたらきっちりソース残ってた。
/Applications/Android Studio.app/sdk/tools/proguard/proguard-android.txt
ここにproguard-android.txtが存在していて、そこにはproguard-android-optimize.txtを使えという指示がある。
色々探しても使えばいいとだけしか記載されていなくて、どう使うのこれ?ってはまりました。
移行した直後ではこんな記載になっていました。
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
getDefaultProguardFileの指定をproguard-android-optimize.txtに切り替えれば良いみたいです。
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt'
このデフォルトで指定された項目にないものをその次のパラメータで渡しているファイルに記載するのが普通みたいです。プロジェクト毎の指定をするためのものです。
問題にはならないのだけど、結構重複していたので、移行時に綺麗にしたほうがよいです。
そもそもEclipseのときのproguardの使い方が間違っていたのでは?という感じですが・・・。
string.xml/AndroidManifest.xmlの扱い方にもはまったのですが、ちょっと書く時間がないので、次回にします。