Smack 4.1推荐的ProGuard规则是什么?

时间:2015-04-16 15:10:29

标签: proguard smack

构建Android发行版apk时,Smack 4.1有哪些适当的ProGuard规则?

目前,我正在使用aSmack github存储库上的README.asmack文件中的aSmack 4.0.x中的规则,该存档过时(引用旧类名,用于4.0.x)。我找不到任何适用于4.1.x的正确程序规则的参考,是否有人可以阐明这一点?

2 个答案:

答案 0 :(得分:8)

  

Smack 4.1构建时的适当Proguard规则是什么?   Android发布apk?

取决于“适当”对你意味着什么。

最简单的方法可能是tell ProGuard to keep all classes and interfaces的Smack。

-keep class org.jivesoftware.smack.** { *; }
-keep class org.jivesoftware.smackx.** { *; }

或者,您可以配置ProGuard,使其仅保留您实际使用的Smack部分,并让ProGuard剥离其他所有内容。但要这样做,您需要很好地了解您的应用程序如何使用Smack。例如,参见MAXS传输XMPP的ProGuard配置:https://bitbucket.org/projectmaxs/maxs/src/75efeba8d8470b89da8cd8551304bb00648e4945/transport-xmpp/proguard-project.txt?at=master#cl-20

请注意如果您不确切知道自己在做什么,那么Smack会出现意外行为甚至崩溃。如果您知道自己在做什么,只能微调ProGuard!

答案 1 :(得分:1)

实际上,我的经验表明,如果您还使用了proguard并且已启用minify,则实际上可能需要额外的一行。如果你收到错误

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

然后需要以下配置:

-keepattributes Signature
-keep class org.jivesoftware.smack.** { *; }
-keep class org.jivesoftware.smackx.** { *; }

有关详细信息,请参阅:smack for android fails when using proguard