【问题标题】:Using Tyrus Websocket Client in Android with Proguard在带有 Proguard 的 Android 中使用 Tyrus Websocket 客户端
【发布时间】:2016-02-06 15:56:28
【问题描述】:

我正在尝试在 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 中运行?

【问题讨论】:

    标签: android android-proguard tyrus


    【解决方案1】:

    您需要为使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多