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)
这对我有用!
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |