Zxing.net.mobile: Xamarin.Forms.Android app crashes only in Release mode and not in Debug Mode

Created on 2 May 2016  Â·  4Comments  Â·  Source: Redth/ZXing.Net.Mobile

Hello to everyone.
I'm making a simple app with a QRCode Scanner. When I deploy the app on my tablet (Android 4.2) in Debug Mode everything works fine.
When I deploy my app in Release Mode when I start the scanner my app crashes.
My question is: Why???

This is my code in the Forms project of Xamarin:

private async void AvviaScan(object sender, EventArgs e)
        {
#if __ANDROID__
    // Initialize the scanner first so it can track the current context
    MobileBarcodeScanner.Initialize (Application);


#endif
            var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
            options.PossibleFormats = new List<ZXing.BarcodeFormat>() {
    ZXing.BarcodeFormat.QR_CODE
};
            var scanner = new ZXing.Mobile.MobileBarcodeScanner();

            var result = await scanner.Scan(options);

            if (result != null)
            {

                await Navigation.PushAsync(new Entry());

            }









        }

and here it is the exception i have in release mode:

`05-02 15:37:10.719 W/monodroid(21877): java.lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:10.719 W/monodroid(21877):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
05-02 15:37:10.719 W/monodroid(21877):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-02 15:37:10.720 W/monodroid(21877):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-02 15:37:10.720 W/monodroid(21877):  at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.n_onClick(Native Method)
05-02 15:37:10.720 W/monodroid(21877):  at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:29)
05-02 15:37:10.720 W/monodroid(21877):  at android.view.View.performClick(View.java:4243)
05-02 15:37:10.720 W/monodroid(21877):  at android.view.View$PerformClick.run(View.java:17520)
05-02 15:37:10.720 W/monodroid(21877):  at android.os.Handler.handleCallback(Handler.java:725)
05-02 15:37:10.720 W/monodroid(21877):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 15:37:10.720 W/monodroid(21877):  at android.os.Looper.loop(Looper.java:153)
05-02 15:37:10.720 W/monodroid(21877):  at android.app.ActivityThread.main(ActivityThread.java:5299)
05-02 15:37:10.720 W/monodroid(21877):  at java.lang.reflect.Method.invokeNative(Native Method)
05-02 15:37:10.720 W/monodroid(21877):  at java.lang.reflect.Method.invoke(Method.java:511)
05-02 15:37:10.720 W/monodroid(21877):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-02 15:37:10.720 W/monodroid(21877):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-02 15:37:10.720 W/monodroid(21877):  at dalvik.system.NativeStart.main(Native Method)
Unhandled Exception:

System.TypeInitializationException: The type initializer for 'ZXing.Mobile.MobileBarcodeScanner' threw an exception.

05-02 15:37:17.392 I/MonoDroid(21877): UNHANDLED EXCEPTION:
05-02 15:37:17.394 I/MonoDroid(21877): System.TypeInitializationException: The type initializer for 'ZXing.Mobile.MobileBarcodeScanner' threw an exception. ---> Java.Lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:17.394 I/MonoDroid(21877):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
05-02 15:37:17.394 I/MonoDroid(21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue* parms) [0x00064] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:195 
05-02 15:37:17.394 I/MonoDroid(21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x0001d] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:203 
05-02 15:37:17.394 I/MonoDroid(21877):   at Android.Runtime.JNIEnv.FindClass (System.String classname) [0x00007] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:494 
05-02 15:37:17.394 I/MonoDroid(21877):   at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00009] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:434 
05-02 15:37:17.394 I/MonoDroid(21877):   --- End of managed exception stack trace ---
05-02 15:37:17.394 I/MonoDroid(21877): java.lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:17.394 I/MonoDroid(21877):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
05-02 15:37:17.394 I/MonoDroid(21877):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-02 15:37:17.394 I/MonoDroid(21877):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-02 15:37:17.394 I/MonoDroid(21877):  at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.n_onClick(Native Method)
05-02 15:37:17.394 I/MonoDroid(21877):  at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:29)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.view.View.performClick(View.java:4243)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.view.View$PerformClick.run(View.java:17520)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.os.Handler.handleCallback(Handler.java:725)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.os.Looper.loop(Looper.java:153)
05-02 15:37:17.394 I/MonoDroid(21877):  at android.app.ActivityThread.main(ActivityThread.java:5299)
05-02 15:37:17.394 I/MonoDroid(21877):  at java.lang.reflect.Method.invokeNative(Native Method)
05-02 15:37:17.394 I/MonoDroid(21877):  at java.lang.reflect.Method.invoke(Method.java:511)
05-02 15:37:17.394 I/MonoDroid(21877):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-02 15:37:17.394 I/MonoDroid(21877):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-02 15:37:17.395 I/MonoDroid(21877):  at dalvik.system.NativeStart.main(Native Method)
05-02 15:37:17.395 I/MonoDroid(21877):   --- End of inner exception stack trace ---
05-02 15:37:17.395 I/MonoDroid(21877):   at GKards.Scan+<AvviaScan>d__1.MoveNext () [0x00045] in C:\Users\ospite\Documents\GKards2\GKards\GKards\Scan.xaml.cs:61 
05-02 15:37:17.395 I/MonoDroid(21877): --- End of stack trace from previous location where exception was thrown ---
05-02 15:37:17.395 I/MonoDroid(21877):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
05-02 15:37:17.395 I/MonoDroid(21877):   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:994 
05-02 15:37:17.395 I/MonoDroid(21877):   at Android.App.SyncContext+<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18 
05-02 15:37:17.395 I/MonoDroid(21877):   at Java.Lang.Thread+RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36 
05-02 15:37:17.395 I/MonoDroid(21877):   at Java.Lang.IRunnableInvoker.n_Run (IntPtr jnienv, IntPtr native__this) [0x00009] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Java.Lang.IRunnable.cs:71 
05-02 15:37:17.395 I/MonoDroid(21877):   at (wrapper dynamic-method) System.Object:c988d302-b863-4aa0-9ae6-8189378b1b6f (intptr,intptr)
05-02 15:37:17.410 I/dalvikvm(21877): Could not find method java.lang.Throwable.<init>, referenced from method md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable.<init>
05-02 15:37:17.410 W/dalvikvm(21877): VFY: unable to resolve direct method 17744: Ljava/lang/Throwable;.<init> (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
05-02 15:37:17.410 D/dalvikvm(21877): VFY: replacing opcode 0x70 at 0x0000
An unhandled exception occured.

05-02 15:37:18.493 E/mono    (21877): 
05-02 15:37:18.493 E/mono    (21877): Unhandled Exception:
05-02 15:37:18.493 E/mono    (21877): System.TypeInitializationException: The type initializer for 'ZXing.Mobile.MobileBarcodeScanner' threw an exception. ---> Java.Lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:18.493 E/mono    (21877):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
05-02 15:37:18.493 E/mono    (21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue* parms) [0x00064] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:195 
05-02 15:37:18.493 E/mono    (21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x0001d] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:203 
05-02 15:37:18.493 E/mono    (21877):   at Android.Runtime.JNIEnv.FindClass (System.String classname) [0x00007] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:494 
05-02 15:37:18.493 E/mono    (21877):   at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00009] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:434 
05-02 15:37:18.493 E/mono    (21877):   --- End of managed exception stack trace ---
05-02 15:37:18.493 E/mono    (21877): java.lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:18.493 E/mono    (21877):   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
05-02 15:37:18.493 E/mono    (21877):   at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-02 15:37:18.493 E/mono    (21877):   at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-02 15:37:18.493 E/mono    (21877):   at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.n_onClick(Native Method)
05-02 15:37:18.493 E/mono    (21877):   at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:29)
05-02 15:37:18.493 E/mono    (21877):   at android.view.View.performClick(View.java:4243)
05-02 15:37:18.493 E/mono    (21877):   at android.view.View$PerformClick.run(View.java:17520)
05-02 15:37:18.493 E/mono    (21877):   at android.os.Handler.handleCallback(Handler.java:725)
05-02 15:37:18.493 E/mono    (21877):   at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 15:37:18.493 E/mono    (21877):   at android.os.Looper.loop(Looper.java:153)
05-02 15:37:18.493 E/mono    (21877):   at android.app.ActivityThread.main(ActivityThread.java:5299)
05-02 15:37:18.493 E/mono    (21877):   at java.lang.reflect.Method.invokeNative(Native Method)
05-02 15:37:18.493 E/mono    (21877):   at java.lang.reflect.Method.invoke(Method.java:511)
05-02 15:37:18.493 E/mono    (21877):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-02 15:37:18.493 E/mono    (21877):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-02 15:37:18.493 E/mono    (21877):   at dalvik.system.NativeStart.main(Native Method)
05-02 15:37:18.493 E/mono    (21877): 
05-02 15:37:18.493 E/mono    (21877):   --- End of inner exception stack trace ---
05-02 15:37:18.493 E/mono    (21877):   at GKards.Scan+<AvviaScan>d__1.MoveNext () [0x00045] in C:\Users\ospite\Documents\GKards2\GKards\GKards\Scan.xaml.cs:61 
05-02 15:37:18.493 E/mono    (21877): --- End of stack trace from previous location where exception was thrown ---
05-02 15:37:18.493 E/mono    (21877):   at (wrapper dynamic-method) System.Object:c988d302-b863-4aa0-9ae6-8189378b1b6f (intptr,intptr)
05-02 15:37:18.493 E/mono    (21877):   at (wrapper native-to-managed) System.Object:c988d302-b863-4aa0-9ae6-8189378b1b6f (intptr,intptr)
05-02 15:37:18.494 E/mono-rt (21877): [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'ZXing.Mobile.MobileBarcodeScanner' threw an exception. ---> Java.Lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:18.494 E/mono-rt (21877):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
05-02 15:37:18.494 E/mono-rt (21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue* parms) [0x00064] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:195 
05-02 15:37:18.494 E/mono-rt (21877):   at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr jmethod, Android.Runtime.JValue[] parms) [0x0001d] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:203 
05-02 15:37:18.494 E/mono-rt (21877):   at Android.Runtime.JNIEnv.FindClass (System.String classname) [0x00007] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:494 
05-02 15:37:18.494 E/mono-rt (21877):   at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00009] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:434 
05-02 15:37:18.494 E/mono-rt (21877):   --- End of managed exception stack trace ---
05-02 15:37:18.494 E/mono-rt (21877): java.lang.ClassNotFoundException: Didn't find class "md5ebfcfb315379575a1b34662c6abbe082.ActivityLifecycleContextListener" on path: DexPathList[[zip file "/data/app/GKards.GKards-2.apk"],nativeLibraryDirectories=[/data/app-lib/GKards.GKards-2, /vendor/lib, /system/lib]]
05-02 15:37:18.494 E/mono-rt (21877):   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
05-02 15:37:18.494 E/mono-rt (21877):   at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-02 15:37:18.494 E/mono-rt (21877):   at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-02 15:37:18.494 E/mono-rt (21877):   at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.n_onClick(Native Method)
05-02 15:37:18.494 E/mono-rt (21877):   at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:29)
05-02 15:37:18.494 E/mono-rt (21877):   at android.view.View.performClick(View.java:4243)
05-02 15:37:18.494 E/mono-rt (21877):   at android.view.View$PerformClick.run(View.java:17520)
05-02 15:37:18.494 E/mono-rt (21877):   at android.os.Handler.handleCallback(Handler.java:725)
05-02 15:37:18.494 E/mono-rt (21877):   at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 15:37:18.494 E/mono-rt (21877):   at android.os.Looper.loop(Looper.java:153)
05-02 15:37:18.494 E/mono-rt (21877):   at android.app.ActivityThread.main(ActivityThread.java:5299)
05-02 15:37:18.494 E/mono-rt (21877):   at java.lang.reflect.Method.invokeNative(Native Method)
05-02 15:37:18.494 E/mono-rt (21877):   at java.lang.reflect.Method.invoke(Method.java:511)
05-02 15:37:18.494 E/mono-rt (21877):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-02 15:37:18.494 E/mono-rt (21877):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-02 15:37:18.494 E/mono-rt (21877):   at dalvik.system.NativeStart.main(Native Method)
05-02 15:37:18.494 E/mono-rt (21877): 
05-02 15:37:18.494 E/mono-rt (21877):   --- End of inner exception stack trace ---
05-02 15:37:18.494 E/mono-rt (21877):   at GKards.Scan+<AvviaScan>d__1.MoveNext () [0x00045] in C:\Users\ospite\Documents\GKards2\GKards\GKards\Scan.xaml.cs:61 
05-02 15:37:18.494 E/mono-rt (21877): --- End of stack trace from previous location where exception was thrown ---
05-02 15:37:18.494 E/mono-rt (21877):   at (wrapper dynamic-method) System.Object:c988d302-b863-4aa0-9ae6-8189378b1b6f (intptr,intptr)
05-02 15:37:18.494 E/mono-rt (21877):   at (wrapper native-to-managed) System.Object:c988d302-b863-4aa0-9ae6-8189378b1b6f (intptr,intptr)
05-02 15:37:18.578 I/IspDrv  (21877): {IspDrv} [~IspDrvImp] 

Thanks to everyone in advantage for helping me!! :)

Most helpful comment

@shanta-goswami , but this will make the Apk too big

All 4 comments

Solution 1: Uninstall your local app that was deployed under Debug mode manually. Deploy Release app.
Solution 2: Update your version of Xamarin
Solution 3: Project setting → Android Options → Linker → Konfiguration = Release; Linking = Sdk Assemblys Only

If your solution works in Debug mode, but not in Release mode, it might be an issue with the Linker.

Right Click on your specific project (not Solution) -> Android Options -> Linker -> Choose "None" in Linking. This will include all dlls in the Release Library.

@shanta-goswami , but this will make the Apk too big

In case this could be useful still. I just had the same problem. The solution was keeping Linking SDKs Assemblys Only and Disable Proguard. It was Proward that caused the issue.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jhealy picture jhealy  Â·  6Comments

mateuszroszczyk picture mateuszroszczyk  Â·  4Comments

alberk8 picture alberk8  Â·  5Comments

mdkitzman picture mdkitzman  Â·  7Comments

sushibear picture sushibear  Â·  6Comments