2015-11-20 96 views
1

Jodd是一個非常棒的圖書館,但是當我的應用程序和Proguard一起發佈時,我遇到了麻煩。它的發生與下面的代碼行拋出詳細belowL在Android上使用Jodd和proguard

  BeanCopy.beans(source, destination).copy(); 

例外例外之前但是,如果我選擇不gradle這個生成過程中禁止警告,多次警告指的是不包括在Android運行時間來補課,例如:

Warning:jodd.util.ClipboardUtil: can't find referenced class java.awt.datatransfer.StringSelection 

這是拋出的異常:

11-19 23:45:00.458 16897-16897/com.myfab5.mobile.debug D/AndroidRuntime: Shutting down VM 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime: FATAL EXCEPTION: main 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime: Process: com.myfab5.mobile.debug, PID: 16897 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime: java.lang.ExceptionInInitializerError 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.e.c.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.a.g.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.a.g.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.a.g.b(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.a.a.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at com.myApp.android.services.copyBeans(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at com.google.android.gms.location.internal.zzk$zzb.handleMessage(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:145) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:6837) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Invalid module: class b.e.j 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.a.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  at b.e.j.a(Unknown Source) 
11-19 23:45:00.468 16897-16897/com.myfab5.mobile.debug E/AndroidRuntime:  

有誰知道如何解決這一問題? Jodd能和Proguard一起使用嗎?

回答

1

是:)您有幾種選擇:

  • 首先,你可以使用jodd-mobile.jarThis mobile version爲核心,豆一小捆和道具模塊,沒有所有的系統類,如ClipboardUtil(其中順便說一句IM要去除今天:)

  • 另一個解決辦法是微調的ProGuard跳過Jodd類,所以你可以把這樣的事情在你的ProGuard配置:

-keep class javax.** { *; } 
-keep class jodd.** { *; } 
-keep class twitter4j.** { *; } 
  • 如果你喜歡冒險,你可以通過自己的腳本刪除Jodd罐有問題的類。

就是這樣。享受Jodd!

+0

非常感謝您的回答!我在我的gradle腳本中包含jodd,如下所示: compile'org.jodd:jodd-bean:3.6.6' 我以爲只會包含必需的類,我現在嘗試使用移動jar。再次感謝! –

+0

我嘗試了移動jar,我現在得到的唯一錯誤是: '代碼 警告:jodd.util.PropertiesUtil $ 1:找不到引用的類jodd.io.findfile。*(此變量的多個變體) ' '代碼 警告:jodd.datetime.JDateTime:找不到引用的類jodd.util.HashCode ' '代碼 警告:jodd.datetime.format.Iso8601JdtFormatter:找不到引用的類jodd.util。 DateFormatSymbolsEx' –

+0

好吧,可能我還沒有更新手機應用程序一段時間:)無論如何,這些只是警告,你應該能夠繼續它現在,對吧? – igr