2011-11-12 64 views
2

我一直在試圖將2個獨立的應用程序提交到亞馬遜應用程序商店,但他們一直被拒絕。這是第一個堆棧跟蹤:Amazon java.lang.VerifyError Android

11-05 11:14:36.488 E/AndroidRuntime(28128): FATAL EXCEPTION: AsyncTask #1 
11-05 11:14:36.488 E/AndroidRuntime(28128): java.lang.RuntimeException: An error occured while executing doInBackground() 
11-05 11:14:36.488 E/AndroidRuntime(28128): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.lang.Thread.run(Thread.java:1096) 
11-05 11:14:36.488 E/AndroidRuntime(28128): Caused by: java.lang.VerifyError: com.companionfree.WLThemeViewer.AmazonClientManager 
11-05 11:14:36.488 E/AndroidRuntime(28128): at com.companionfree.WLThemeViewer.UpdateDBs.doInBackground(UpdateDBs.java) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at com.companionfree.WLThemeViewer.UpdateDBs.doInBackground(UpdateDBs.java) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
11-05 11:14:36.488 E/AndroidRuntime(28128): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
11-05 11:14:36.488 E/AndroidRuntime(28128): ... 4 more 

而對於第二

10-12 15:41:48.929 D/dalvikvm(2451): GC_FOR_MALLOC freed 8099 objects/524416 bytes in 34ms 
10-12 15:41:49.327 I/RPC  (1563): rx thread timeout (1 clients): 
10-12 15:41:49.828 I/RPC  (1563): rx thread timeout (1 clients): 
10-12 15:41:50.089 I/ActivityManager(1563): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.companionfree.pushup/.MainScreen } 
10-12 15:41:50.099 D/SurfaceFlinger(1563): Layer::setBuffers(this=0xeafa50), pid=1563, w=1, h=1 
10-12 15:41:50.099 D/SurfaceFlinger(1563): Layer::setBuffers(this=0xeafa50), pid=1563, w=1, h=1 
10-12 15:41:50.139 D/SurfaceFlinger(1563): Layer::requestBuffer(this=0xeafa50), index=0, pid=1563, w=480, h=800 success 
10-12 15:41:50.189 I/ActivityManager(1563): Start proc com.companionfree.pushup for activity com.companionfree.pushup/.MainScreen: pid=2644 uid=10129 gids={1015, 3003} 
10-12 15:41:50.319 I/RPC  (1563): rx thread timeout (1 clients): 
10-12 15:41:50.359 W/dalvikvm(2644): VFY: Lcom/companionfree/pushup/WorkoutDbAdapter; is not instance of Landroid/app/Activity; 
10-12 15:41:50.369 W/dalvikvm(2644): VFY: bad arg 0 (into Landroid/app/Activity;) 
10-12 15:41:50.369 W/dalvikvm(2644): VFY: rejecting call to Lcom/amazon/android/Kiwi;.onActivityResult (Landroid/app/Activity;IILandroid/content/Intent;)Z 
10-12 15:41:50.369 W/dalvikvm(2644): VFY: rejecting opcode 0x71 at 0x0000 
10-12 15:41:50.369 W/dalvikvm(2644): VFY: rejected Lcom/companionfree/pushup/WorkoutDbAdapter;.onActivityResult (IILandroid/content/Intent;)V 
10-12 15:41:50.369 W/dalvikvm(2644): Verifier rejected class Lcom/companionfree/pushup/WorkoutDbAdapter; 
10-12 15:41:50.369 D/AndroidRuntime(2644): Shutting down VM 
10-12 15:41:50.369 W/dalvikvm(2644): threadid=1: thread exiting with uncaught exception (group=0x40025a70) 
10-12 15:41:50.369 E/AndroidRuntime(2644): FATAL EXCEPTION: main 
10-12 15:41:50.369 E/AndroidRuntime(2644): java.lang.VerifyError: com.companionfree.pushup.WorkoutDbAdapter 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at com.companionfree.pushup.MainScreen.onCreateMainScreen(MainScreen.java) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at com.companionfree.pushup.MainScreen.onCreate(MainScreen.java) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2802) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.ActivityThread.access$2300(ActivityThread.java:136) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.os.Looper.loop(Looper.java:143) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at android.app.ActivityThread.main(ActivityThread.java:5073) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
10-12 15:41:50.369 E/AndroidRuntime(2644):  at dalvik.system.NativeStart.main(Native Method) 
10-12 15:41:50.379 W/ActivityManager(1563): Force finishing activity com.companionfree.pushup/.MainScreen 
10-12 15:41:50.399 D/SurfaceFlinger(1563): Layer::setBuffers(this=0xeff6b8), pid=1563, w=1, h=1 
10-12 15:41:50.399 D/SurfaceFlinger(1563): Layer::setBuffers(this=0xeff6b8), pid=1563, w=1, h=1 
10-12 15:41:50.419 D/SurfaceFlinger(1563): Layer::requestBuffer(this=0xeff6b8), index=0, pid=1563, w=480, h=337 success 
10-12 15:41:50.469 D/dalvikvm(2451): GC_FOR_MALLOC freed 7889 objects/521072 bytes in 105ms 
10-12 15:41:50.819 I/RPC  (1563): rx thread timeout (1 clients): 

相關的logcat我看到了同樣的錯誤校驗兩個,但我無法弄清楚。這兩個應用程序之間唯一使用的通用庫是用於分析的FlurryAgent.jar。

對於頂級應用程序我有 對於底部的應用程序,我有 在清單。我已經能夠找到的唯一信息是關於庫(GSON)並需要使用dx,但我使用的是Eclipse,因此沒有任何幫助。

爲了使這變得更加困難,錯誤不會發生在Android Market上。然而亞馬遜的測試人員表示,他們的每臺設備都使用FC 5/5次(我嘗試使用仿真器作爲測試設備,而且工作正常)。我知道他們在我的應用程序周圍使用「包裝」代碼,我認爲它一定會以某種方式干擾。

有沒有人有這方面的經驗?

回答

0

我想說這是亞馬遜的問題。顯然,他們被注入一些DRM代碼到您的APK:Injecting code into APK

其他人也看到類似的錯誤 - Android app issue (Amazon)

+0

是的,我找到了那些。我想我會聯繫亞馬遜,看看他們說什麼。這真的令人沮喪。與他們的appstore可怕的經驗。 – easycheese

0

在我而言,這是造成的VerifyError是在一個叫做UTIL包中的類。這可能與亞馬遜的注入式軟件包衝突,因爲將其重命名爲utils解決了該問題。

因爲我們的應用程序使用的是Facebook SDK,因此在上傳新的二進制文件時,會給出「不,我將在我的二進制文件上簽名」選項。當您以這種方式上傳未簽名的APK時,亞馬遜會讓您下載已處理的二進制文件(包括其注入的代碼)爲步驟2,以便您可以對其進行簽名。我可以下載一個崩潰的APK副本,並且無需通過審批流程就可以測試我的更改。

+0

你如何去做這件事? – easycheese

2

我有一個類似的問題 - 從AndroidManifest.xml中

除去非活性類

亞馬遜注入自己的代碼到你的應用程序活動生命週期事件,解決它。知道了,看着您所提供的日誌:

10-12 15:41:50.359 W/dalvikvm(2644): VFY: Lcom/companionfree/pushup/WorkoutDbAdapter; is not instance of Landroid/app/Activity;

看來,亞馬遜的代碼試圖儀表類(WorkoutDbAdapter),這是不是一個活動(不擴展活動),結束了被被JVM的驗證器拒絕。

隨着我的應用程序發生這種情況,自從列出的類被列爲AndroidManifest.xml上的Activity。從AndroidManifest.xml中刪除此列表解決了該問題,並且該應用程序已被納入市場。

Sarp寫道,重命名你的類的包裝解決了問題,也許這樣做,你已經使AndroidManifest.xml中的列表不再相關。從而繞過這個問題。

0

我解決我的問題,並能幫助你

我剛剛更新了AS 2.0和ADT和驗證問題出來 最後,要小心類似的構造:

class abc { 
    abc(int x) { 
    .... 
    } 
    abc(byte x) { 
    .... 
    } 
}