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!! :)
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.
Most helpful comment
@shanta-goswami , but this will make the Apk too big