luontola / retrolambda

Backport of Java 8's lambda expressions to Java 7, 6 and 5
Apache License 2.0
3.54k stars 227 forks source link

Class Rejected on Android 4.4 #94

Open jhbruhn opened 8 years ago

jhbruhn commented 8 years ago

When running my application on an Android 4.4 Emulator, but DEX seems to reject some of the generated code which leads to the App crashing when the relevant parts get called. These are the logs given by logcat:

04-17 09:29:16.788 23406-23406/de.alternadev.georenting.internal.debug W/dalvikvm: VFY: invoke type does not match method type of Ljava/lang/Object;.toString
04-17 09:29:16.788 23406-23406/de.alternadev.georenting.internal.debug W/dalvikvm: VFY:  rejecting opcode 0x70 at 0x002c
04-17 09:29:16.788 23406-23406/de.alternadev.georenting.internal.debug W/dalvikvm: VFY:  rejected Lde/alternadev/georenting/ui/main/MainActivity$AjcClosure1;.access$super (Lde/alternadev/georenting/ui/main/MainActivity$AjcClosure1;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
04-17 09:29:16.788 23406-23406/de.alternadev.georenting.internal.debug W/dalvikvm: Verifier rejected class Lde/alternadev/georenting/ui/main/MainActivity$AjcClosure1;
04-17 09:29:16.788 23406-23406/de.alternadev.georenting.internal.debug D/AndroidRuntime: Shutting down VM
04-17 09:29:16.798 23406-23406/de.alternadev.georenting.internal.debug W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xb2cf9b20)
04-17 09:29:16.798 23406-23406/de.alternadev.georenting.internal.debug E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                         Process: de.alternadev.georenting.internal.debug, PID: 23406
                                                                                         java.lang.VerifyError: de/alternadev/georenting/ui/main/MainActivity$AjcClosure1
                                                                                             at de.alternadev.georenting.ui.main.MainActivity.onNavigationItemSelected(MainActivity.java:185)
                                                                                             at de.alternadev.georenting.ui.main.MainActivity.access$lambda$0(MainActivity.java:0)
                                                                                             at de.alternadev.georenting.ui.main.MainActivity$$Lambda$1.onNavigationItemSelected(Unknown Source)
                                                                                             at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:151)
                                                                                             at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
                                                                                             at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
                                                                                             at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
                                                                                             at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:318)
                                                                                             at android.view.View.performClick(View.java:4438)
                                                                                             at android.view.View$PerformClick.run(View.java:18422)
                                                                                             at android.os.Handler.handleCallback(Handler.java:733)
                                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                             at android.os.Looper.loop(Looper.java:136)
                                                                                             at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                             at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                                             at dalvik.system.NativeStart.main(Native Method)
luontola commented 8 years ago

Can you give more information for reproducing it? For example the source that causes that problem and/or the .class file before and after it is processed with Retrolambda.

jhbruhn commented 8 years ago

Hej! I have uploaded my whole app's source to GitHub. I just encountered the problem again. The Error gets raised in this Part: https://github.com/alternaDev/georenting-android/blob/0abe504152b71e5f5f8befb738f7fd9aeb789d70/app/src/main/java/de/alternadev/georenting/ui/main/MainActivity.java#L197

FATAL EXCEPTION: main
                                                                                       java.lang.VerifyError: de/alternadev/georenting/ui/main/MainActivity$AjcClosure1
                                                                                           at de.alternadev.georenting.ui.main.MainActivity.handleSignIn(MainActivity.java:197)
                                                                                           at de.alternadev.georenting.ui.main.MainActivity.access$lambda$1(MainActivity.java:0)
                                                                                           at de.alternadev.georenting.ui.main.MainActivity$$Lambda$5.onResult(Unknown Source)
                                                                                           at com.google.android.gms.common.api.internal.zzb$zza.zzb(Unknown Source)
                                                                                           at com.google.android.gms.common.api.internal.zzb$zza.handleMessage(Unknown Source)
                                                                                           at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                           at android.os.Looper.loop(Looper.java:137)
                                                                                           at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                           at java.lang.reflect.Method.invoke(Method.java:511)
                                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                           at dalvik.system.NativeStart.main(Native Method)

generated.tar.gz

I hope this will help you. If you need more information please contact me.