2016-04-22 102 views
-1

我正在使用IBM的mobilefirst worklight版本6.3進行推送通知。一切正常,當我不應用proguard。 當我申請proguard並在訂閱推送通知時運行構建只有我得到以下異常。應用proguard後,Worklight推送通知不起作用

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

我在drawable文件夾中有push.png命名文件。 關於如何處理proguard上的任何建議,還是它是一個worklights錯誤?

與另一個第三方庫存在相同的問題,但是當我添加keep class com.classname.** {*;}時,我解決了這個問題,但我的工作照片和-keep class com.worklight.** {*;}一樣,但沒用。下面

是,我已經使用

-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

?發佈你的proguard配置細節 –

+0

版本是6.3我也更新了我的問題。 –

+0

你應該也發佈你使用的proguard配置 –

回答

2

MobileFirst 6.3不使用ProGuard正式支持混淆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日誌以查看是否正在所有文件夾中「push.png」被搗碎並查找錯誤消息。

修改ProGuard的配置您正在使用什麼版本MobileFirst對載有

-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 
+0

我做了你提到的變化,但我仍然得到相同的'RunTimeException'我假設你這樣做混合應用我請你試試看在Android本機應用程序以及檢查。 –

+0

在proguard確認文件中,我添加了' -keep class com.worklight.push。** {*; } -keep class com.worklight.wlclient.push。** {*; }' –

+0

您在查詢中並不清楚Hybrid或native。所以我測試了混合動力車。讓我檢查本機 –