Proguard使用時の注意
元々Android用ではないため、Javaのソースのみを難読化し、
XMLは無視する様子。
そのため、難読化しないクラスを除外設定しないといけない。
proguard.cfg に設定があるので編集する。
1. クラス名の難読化除外。
おすすめ
- -keep public class * extends android.app.Activity
- -keep public class * extends android.app.Application
- -keep public class * extends android.app.Service
- -keep public class * extends android.content.BroadcastReceiver
- -keep public class * extends android.content.ContentProvider
- -keep public class * extends android.app.backup.BackupAgentHelper
- -keep public class * extends android.preference.Preference
- -keep public class com.android.vending.licensing.ILicensingService
- -keep public class * extends android.view.View
- -keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.view.View
-keep public class * extends android.support.v4.app.Fragment
この場合、クラス名は何でもよくてandroid.view.View、またはその子を継承しているもの
-keep public class * extends android.view.View
2. メソッド名の難読化除外
xml に android:onClick がある場合、xmlは難読化しないのでjavaのメソッド名も除外に指定する。
- -keepclassmembers class * {
- public void On*Click(android.view.View);
- public void on*Click(android.view.View);
- }
-keepclassmembers class * {
public void On*Click(android.view.View);
public void on*Click(android.view.View);
}
そのため、onClickメソッドはやっぱり on*Click という命名規則にした方が良い。