我使用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.**
答案 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
首先:
修改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