1

如果我有一个 Scala Android 项目并且我在我的 apk 中使用这些方法...

scala.collection.immutable.List#::
scala.collection.immutable.List#:::

...,在我使用 ProGuard 之后,它将scala.collection.immutable.List只使用 2 种方法保持类,::并且:::.

ProGuard 中是否有一个选项可以将所有 方法和字段保留在一个类中,即使它们当前未使用,但不发送 ProGuard:-keep class scala.collection.immutable.List {*;}

4

1 回答 1

0

我发现我这样做的唯一方法是确定在我的编译类中使用了哪些类和方法。

我通过数据结构映射它们Map[String, Set[String]],其中键是类名,对应的Set值包含该类中使用的所有方法。

之后,只需创建大量-keep参数即可:

def getProGuardKeepArgs(allDeps: MMap[String, MSet[String]]): String = {
    var sb = new StringBuilder()
    for ((clazz, methods) <- allDeps) {
        sb.append("-keep class " + clazz + " {\n")

        for (method <- methods) {
            sb.append(" *** " + method + "(...);\n")
        }

        sb.append("}\n\n")
    }

    sb.toString
}
于 2012-07-15T09:26:11.270 回答