在我的 Android 应用程序中,我通常不会在代码中创建 View 的点击处理程序,而是依赖于在 XML 布局文件中指定它的能力,如下所示:
<Button
....
android:onClick="onSearchClicked"
...../>
然后在 Activity 中有这样的方法:
public void onSearchClicked( View v ) {
........}
意思是在我自己的代码中没有明显引用这个方法。
当为生产版本运行 Proguard 时,它似乎删除了这个方法并且点击失败。
我可以在我的混淆器配置文件中添加什么来避免这种不需要我重命名所有这些方法的情况?
- 我可以添加到方法中并让 proguard 注意到的注释吗?
- 以某种方式指定从 xml 引用的这些类型的方法?
- 我想我可以在代码中添加一个错误的引用,但我想尽可能避免这种情况,因为我不会总是记得把它放进去!
我已经查看了适用于 Android 的混淆器示例,但看不到满足此特定需求的任何内容。
最佳答案
这似乎是最好的答案,因为它对此类方法的命名具有 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);
}
希望对您有所帮助。
关于Android Proguard - 如何保持仅从 XML 布局引用的 onClick 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216685/