SignalR android 客户端的 proguard 规则是什么?

Zia*_*Zia 4 android proguard signalr-hub signalr.client android-proguard

我有一个使用 SignalR 的聊天应用程序。最近我启用了PROGUARD。Gson proguard 规则没问题。对于调试 apk,聊天消息发送到服务器 OK。服务器将消息推送到chat_Receiver,但我只能在chat_Receiver 的“SignalR LOG”下方看到响应。

Platform.loadPlatformComponent(new AndroidPlatformComponent());
    String serverUrl = getString(R.string.BaseUrl) + "/signalr";
    printLog = true;
    mHubConnection = new HubConnection(serverUrl, "MobileNumber=" + sender_mobile_numberEn, false, new Logger() {
        @Override
        public void log(String s, LogLevel logLevel) {
            if (printLog) {
                Log.d(TAG, "SignalR LOG:" + s);
            }

        }
    });
    mHubProxy = mHubConnection.createHubProxy(SERVER_HUB_CHAT);
Run Code Online (Sandbox Code Playgroud)

但是我没有在“ChatMessageResponse LOG”下面得到发布 apk 的响应。

private void registerReceiver() {
    Log.d(TAG, "registerReceiver called");

    mHubProxy.on("PushMessageToClient", new SubscriptionHandler1<ChatMessageResponsePOCO[]>() {
        @Override
        public void run(final ChatMessageResponsePOCO[] msgs) {

            Gson gsonForArray = new GsonBuilder().create();
            JsonArray jsonArray = gsonForArray.toJsonTree(msgs).getAsJsonArray();

            Log.d(TAG, "ChatMessageResponse LOG: " + jsonArray);

            processChatMessaages(jsonArray);

        }

    }, ChatMessageResponsePOCO[].class);
}
Run Code Online (Sandbox Code Playgroud)

proguard-rules.pro 文件如下:

Platform.loadPlatformComponent(new AndroidPlatformComponent());
    String serverUrl = getString(R.string.BaseUrl) + "/signalr";
    printLog = true;
    mHubConnection = new HubConnection(serverUrl, "MobileNumber=" + sender_mobile_numberEn, false, new Logger() {
        @Override
        public void log(String s, LogLevel logLevel) {
            if (printLog) {
                Log.d(TAG, "SignalR LOG:" + s);
            }

        }
    });
    mHubProxy = mHubConnection.createHubProxy(SERVER_HUB_CHAT);
Run Code Online (Sandbox Code Playgroud)

即使在启用 Proguard 之后,调试 apk 也一切正常。问题仅适用于发布 apk。对此的解决方案或 proguard 规则是什么? 

小智 6

在您的 proguard 规则中添加以下几行:

 -keep class com.microsoft.signalr.** { *; }
 -keep interface com.microsoft.signalr.** { *; }
Run Code Online (Sandbox Code Playgroud)

这对我有用!