我在我的Android应用程序的某些.xml布局文件中使用android:onClick
属性,但ProGuard在运行时会从我的代码中删除这些方法,因为我的代码中没有任何东西在调用它们。
而不是单独指定每个函数,我想将它们命名为listener_functionName
,并使用通配符,如-keep listener_*
(我知道这是不正确的,但希望它说明了我的目标)。< / p>
如果这可能会很好,但如果不是,我仍然需要知道如何在proguard.cfg文件中指定这些函数。任何帮助表示赞赏。
答案 0 :(得分:20)
根据proguard文件:
字段和方法也可能是 使用正则表达式指定。 名称可以包含以下内容 通配符:?匹配任何一个 方法名称中的字符。 *匹配方法名称的任何部分。
所以,你会发现指定
-keep class com.example.MyClass {
public void listener_*(android.view.View);
}
在你的proguard标志中。
答案 1 :(得分:3)
你可以用这种方式为你的所有课程做一次:
-keepclasseswithmembers class * {
void listener_*(...);
}
答案 2 :(得分:0)
一种更贪婪的方法,应该保持所有&#34; onClick&#34;方法:
-keepclassmembers class * {
public void * (android.view.View);
}
==&GT;因此,基本上每个具有Android视图作为唯一参数的公共方法都应该在ProGuard中存活下来。