2013-08-25 52 views
1

我在我的Android應用程序Wallpaper Saver中實施Dropbox Sync API。它的工作原理,當我在調試模式下從Eclipse中運行,但是當我出口並運行它通過proguard的它拋出這個以下異常:Dropbox同步API在使用Proguard時不起作用

08-25 23:09:52.833: E/AndroidRuntime(32148): FATAL EXCEPTION: main 
08-25 23:09:52.833: E/AndroidRuntime(32148): java.lang.ExceptionInInitializerError 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.a.a(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.a.<init>(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.ad.a(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.ad.a(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at dk.alroe.apps.WallpaperSaver.ADropboxConnector.a(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at dk.alroe.apps.WallpaperSaver.ADropboxConnector.onCreate(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.Activity.performCreate(Activity.java:5104) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.ActivityThread.access$600(ActivityThread.java:153) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.os.Looper.loop(Looper.java:137) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at android.app.ActivityThread.main(ActivityThread.java:5226) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at java.lang.reflect.Method.invokeNative(Native Method) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at java.lang.reflect.Method.invoke(Method.java:511) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at dalvik.system.NativeStart.main(Native Method) 
08-25 23:09:52.833: E/AndroidRuntime(32148): Caused by: java.lang.ExceptionInInitializerError 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.NativeLib.<init>(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.NativeLib.<clinit>(Unknown Source) 
08-25 23:09:52.833: E/AndroidRuntime(32148): ... 20 more 
08-25 23:09:52.833: E/AndroidRuntime(32148): Caused by: java.lang.NoSuchMethodError: no method with name='<init>' signature='(Lcom/dropbox/sync/android/NativeEnv;)V' in class Lcom/dropbox/sync/android/NativeHttp; 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.NativeHttp.nativeClassInit(Native Method) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.NativeHttp.nativeClassInit(Native Method) 
08-25 23:09:52.833: E/AndroidRuntime(32148): at com.dropbox.sync.android.NativeHttp.<clinit>(Unknown Source) 

據我瞭解,Proguard的已刪除有點過分。如何阻止Proguard在Dropbox jar中使用方法?

+1

您是否嘗試過[此答案?](http://stackoverflow.com/a/6542704)中描述的任何方法 –

+0

謝謝A - C。你救了我的一天! – tobalr

+0

不客氣! –

回答

4

添加下面一行到我ProGuard的文件解決了這個問題

-keep class com.dropbox.** {*;} 

多虧了 - 下指着我在正確的方向!