在我的Android应用程序中,我不会在代码中创建View的on-click处理程序,但依赖于在XML布局文件中指定它的能力,如下所示:
<Button
....
android:onClick="onSearchClicked"
...../>
然后在Activity中使用这样的方法:
public void onSearchClicked( View v ) {
........}
意思是在我自己的代码中没有明显的参考。
在为生产版本运行Proguard时,它似乎删除了此方法,并且点击失败。
我可以将哪些内容添加到我的proguard配置文件中以避免这种情况,并不会强迫我重命名所有这些方法?
我查看了针对Android的proguard示例,看不到任何针对这种特殊需求的内容。
答案 0 :(得分:22)
这似乎是最好的答案,因为它对这些方法的命名是100%健壮的:
# This will avoid all the onClick listeners referenced from XML Layouts from being removed
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
希望它有所帮助。
答案 1 :(得分:1)
-keepclasseswithmembers class * {
public void onSearchClicked(android.view.View );
}
但请从proguard doc仔细检查: http://proguard.sourceforge.net/index.html#/manual/refcard.html
答案 2 :(得分:1)
我用:
-keepclassmembers class * extends android.app.Activity {
public void on*Click(android.view.View);
}
然后我将所有onClick方法命名为:onCancelBtnClick(),onBackgroundClick()等。