应用proguard后,Worklight推送通知无法正常工作

时间:2016-04-22 06:17:18

标签: android push-notification ibm-mobilefirst android-proguard

我使用IBM的mobilefirst worklight版本6.3进行推送通知。当我不使用proguard时,一切正常。 当我在订阅推送通知时应用proguard并运行构建时,我只得到以下异常。

java.lang.RuntimeException: Failed to find the icon resource. Add the icon file under the /res/drawable folder.

我在drawable文件夹中有push.png命名文件。 关于如何在proguard上处理它的任何建议或者它是一个工作灯错误?

与另一个第三方库存在同样的问题,但是当我添加keep class com.classname.** {*;}时我解决了同样的工作问题-keep class com.worklight.** {*;},但它没有用。

下面是我使用的proguard配置

-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
-keep class com.google.gson.Gson
-keep class com.billdesk.** {*;}
-keep public class com.worklight.** {*;}
-dontwarn com.worklight.**
-dontwarn com.auth0.jwt.**
-dontwarn com.squareup.picasso.**
-dontwarn com.viewpagerindicator.**
-dontwarn org.bouncycastle.**

1 个答案:

答案 0 :(得分:2)

MobileFirst 6.3并未正式支持使用Proguard进行混淆。 即便如此,在大多数情况下,使用Proguard进行混淆的Android项目也可以正常工作。

我无法重新提到您提到的问题。我在使用Proguard进行模糊处理后测试了MFP 6.3 Eventsource通知示例,并且应用程序正常运行。没有看到运行时异常。

Android SDK Tools : 25.1.1
Target API Level : 19
Proguard version : 4.7

首先:

  1. 确保所有可绘制文件夹中都存在push.png,而不仅仅是通用文件夹。
  2. 检查proguard obfusction日志以查看&#34; push.png&#34;正在所有文件夹中处理并查找错误消息。
  3. 修改proguard配置以包含 -

    -keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
    
    -keepattributes InnerClasses
    -keep class **.R
    -keep class **.R$* {
        <fields>;
    }
    
    -keep class org.apache.cordova.** { *; }
    -keep public class * extends org.apache.cordova.CordovaPlugin
    
    -keep class com.worklight.androidgap.push.** { *; }
    -keep class com.worklight.wlclient.push.** { *; }
    -keep class com.worklight.common.security.AppAuthenticityToken { *; }
    
    -keep class com.google.** { *;}
    -dontwarn com.google.common.**
    -dontwarn com.google.ads.**
    
    -dontwarn com.worklight.androidgap.push.GCMIntentService
    -dontwarn com.worklight.androidgap.plugin.WLInitializationPlugin
    -dontwarn com.worklight.wlclient.push.GCMIntentService
    -dontwarn org.bouncycastle.**
    -dontwarn com.worklight.nativeandroid.common.WLUtils
    
    -dontwarn com.worklight.wlclient.push.WLBroadcastReceiver
    -dontwarn com.worklight.wlclient.push.common.*
    -dontwarn com.worklight.wlclient.api.WLPush