构建Android发布apk时,Smack 4.1的适当ProGuard规则是什么?
目前,我正在使用来自aSmack github存储库的README.asmack文件中aSmack 4.0.x的规则,但这已经过时(引用了旧的类名称,并且只适用于4.0.x)。我找不到任何有关4.1.x使用的正确proguard规则的参考,有人可以解答吗?
在构建Android发布apk时,Smack 4.1的适当Proguard规则是什么?
这取决于您对“适当”的理解。
最简单的方法可能是告诉ProGuard保留Smack的所有类和接口。
-keep class org.jivesoftware.smack.** { *; }
-keep class org.jivesoftware.smackx.** { *; }
或者,您可以配置ProGuard,使其仅保留您实际使用的Smack部分,并让ProGuard剥离其他所有内容。但要这样做,您需要很好地了解您的应用程序如何使用Smack。例如,请参阅MAXS的Transport XMPP的ProGuard配置:https://bitbucket.org/projectmaxs/maxs/src/75efeba8d8470b89da8cd8551304bb00648e4945/transport-xmpp/proguard-project.txt?at=master#cl-20
请注意,如果您不确定自己在做什么,则Smack可能会表现出意外行为甚至崩溃。只有在您知道自己在做什么时才微调ProGuard!
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.** { *; }