我试图理解这个问题,但我仍然不明白为什么会发生这种情况:根据默认的proguard.cfg文件,我定义了以下规则:
-keep public class * extends android.app.Activity
据我所了解,这意味着:将任何
Activity
类保留为入口点,但可以自由缩小/混淆/优化其中的任何内容(否则我将不得不使用例如<methods>
通配符来保留方法,对吗?)。现在我的测试
Activity
看起来像这样:public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
...
}
public void unusedMethod() {
}
}
如果我现在导出一个已签名的APK,并且调用了ProGuard,它将按预期删除
unusedMethod
,但它将保留onCreate
方法并且不会混淆其名称。为什么会这样?
M
的POJOA
,并从MyActivity调用它,而且没有为其指定任何保留规则,那么ProGuard将保留A
并混淆其名称,但它将不会混淆M
... 我感到困惑。 - mxk