使用 Proguard 在 Android 中使用 Tyrus Websocket 客户端

Using Tyrus Websocket Client in Android with Proguard

我正在尝试在 Android 中使用 Tyrus (org.glassfish.tyrus.bundles:tyrus-standalone-client:1.10)。这是我的混淆器相关部分:

-dontoptimize
-keepparameternames
-keepclassmembers,allowoptimization enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class org.glassfish.tyrus.** {  *; }
-keep class org.glassfish.grizzly.** { *; }
-keep class javax.websocket.** { *; }

我调用了 ClientManager connectToServer 并且此方法不会 return 并且 hangs.But 如果我禁用混淆器它会起作用。我怎样才能使它在 Android 中与 proguard 一起工作?

您需要为使用 Tyrus

的片段或 Activity 添加以下行
-keep,includedescriptorclasses class com.package.YourClass$* { *; }

对于 tyrus,您需要添加以下行

-keepattributes Signature,InnerClasses,*Annotation*
-keep,includedescriptorclasses  class org.glassfish.tyrus.** {  *; }
-keep,includedescriptorclasses  class org.glassfish.grizzly.** { *; }
-keep,includedescriptorclasses  class javax.websocket.** { *; }

通过添加这些行,我成功地在 Android 中使用了 Tyrus。 这是 Tyrus 的参考:https://blogs.oracle.com/PavelBucek/entry/reducing_websocket_client_jar_size