很抱歉,如果这太基础了 - 我很难找到我能理解的Proguard文档。
我对Proguard如何缩小Android应用程序的理解是通过查找未使用的(未调用的?)方法并从构建中消除它们。因此,如果我有一个方法buynewCoke()从未在代码中的任何其他位置调用,它将被删除。
但是,如果存在一个方法,比如调用buyNewCoke()的visitStoreAfterMidnight(),该怎么办?而visitStoreAfterMidnight本身从未被调用过。 Proguard是否仍然删除这两种方法?或者它是否保留了buyNewCoke(),因为它被某些东西所反映?
也就是说,如果A调用B而没有任何调用A,Proguard如何表现?
答案 0 :(得分:1)
visitStoreAfterMidnight()
和buyNewCoke()
都将被移除。
实际上它的工作原理类似于垃圾收集,它从需要保留的东西开始,检查它们使用的是什么,只保留它们。
修改强>
官方参考: http://proguard.sourceforge.net/manual/introduction.html
切入点
为了确定必须保留哪些代码以及哪些代码 可以丢弃或混淆,您必须指定一个或多个条目 指向您的代码。这些入口点通常是带有的类 主要方法,小程序,midlet,活动等。
在收缩步骤中,ProGuard从这些种子开始 递归地确定使用哪些类和类成员。所有 其他类和类成员将被丢弃。