1

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

-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,这个方法没有返回并挂起。但如果我禁用proguard,它就可以工作。我怎样才能让它在带有proguard的Android中工作?

4

1 回答 1

0

您需要为使用 Tyrus 的 Fragment 或 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

于 2016-02-06T22:13:06.793 回答