【问题标题】:Proguard configuration to leave some inner classes aloneProguard 配置以单独保留一些内部类
【发布时间】:2012-08-22 17:09:22
【问题描述】:

我正在尝试将 Eclipse 中的 proguard.cfg 文件配置为保留某些内部类(不要重命名类或类成员)。

所以在我的例子中,内部类都在 com.mycorp.android.mapper.APIHelper 中

我试过了:

-keepclasseswithmembers public class com.mycorp.android.mapper.APIHelper$*

但这似乎不起作用。什么是正确的语法?

编辑:我也试过让这些类实现一个空白接口,然后尝试:

-keepclasseswithmembers class * implements com.mycorp.android.JSONSerializable {
    *;
}

也没有运气。

【问题讨论】:

  • 更新:问题似乎出在 GSON 和 Proguard 上。添加了更多的 gson 特定行进行配置,并进一步但还不完美。

标签: android eclipse proguard


【解决方案1】:

您需要指定要保留的成员。如果是所有这些,我相信以下应该有效。这不会保留 APIHelper 类本身,只保留内部类及其成员。

-keep public class com.mycorp.android.mapper.APIHelper$* {
   *;
}

【讨论】:

    【解决方案2】:

    我认为您应该使用-keep 而不是-keepclasseswithmembers(基于Proguard 文档here)。

    【讨论】:

    • 不,我已经用 -keep 试过了,也没有运气。
    • 有趣..也许您可以更仔细地查看Class Specifications 部分或查看android application example 以获得一些想法。
    • 问题似乎在于同时使用 GSON 和 Proguard。通过向 Proguard 添加一些 gson 配置条目,我比以前更进一步了。仍然不完美。
    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2013-03-25
    • 2012-06-13
    • 2012-12-13
    相关资源
    最近更新 更多