Proguard收缩行为 - 二级方法

时间:2015-09-10 03:26:01

标签: android proguard

很抱歉,如果这太基础了 - 我很难找到我能理解的Proguard文档。

我对Proguard如何缩小Android应用程序的理解是通过查找未使用的(未调用的?)方法并从构建中消除它们。因此,如果我有一个方法buynewCoke()从未在代码中的任何其他位置调用,它将被删除。

但是,如果存在一个方法,比如调用buyNewCoke()的visitStoreAfterMidnight(),该怎么办?而visitStoreAfterMidnight本身从未被调用过。 Proguard是否仍然删除这两种方法?或者它是否保留了buyNewCoke(),因为它被某些东西所反映?

也就是说,如果A调用B而没有任何调用A,Proguard如何表现?

1 个答案:

答案 0 :(得分:1)

visitStoreAfterMidnight()buyNewCoke()都将被移除。

实际上它的工作原理类似于垃圾收集,它从需要保留的东西开始,检查它们使用的是什么,只保留它们。

修改

官方参考: http://proguard.sourceforge.net/manual/introduction.html

  

切入点

     

为了确定必须保留哪些代码以及哪些代码   可以丢弃或混淆,您必须指定一个或多个条目   指向您的代码。这些入口点通常是带有的类   主要方法,小程序,midlet,活动等。

     

收缩步骤中,ProGuard从这些种子开始   递归地确定使用哪些类和类成员。所有   其他类和类成员将被丢弃。