Suddenly and seemingly for no reason at all, the following error starts presenting itself. After fighting it all day, I discovered enabling Multi-Dex resolved it. Is this error potentially caused by my breaching the 64k reference threshold?
java.lang.RuntimeException: Unable to instantiate application md52323d240c954a07dbdbeb3f1c41a0cab.MainApplication: java.lang.ClassNotFoundException: Didn't find class "md52323d240c954a07dbdbeb3f1c41a0cab.MainApplication" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /data/app/com.myapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:823)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5529)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1576)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:6281)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Somewhere I can see the count of references? How do I know if I surpassed this - in VS specifically?
This is a known issue in the creation of the Java
classes.zip
file in the following release:Bug: xamarin.android_8.1/#Known_Issues
GitHub PR fix: https://github.com/xamarin/xamarin-android/pull/1142
Workaround:
You can clean/rebuild as a workaround on Windows in order to recreate the Java
classes.zip
fileFirst, you can count the method references (and see other useful insight) using the APK Analyzer tool. It is shipped with Android Studio; you can find it under the Build menu and it's also available from the command line with
apkanalyzer.
Second, you will get a build error indicating you need to use multi dex. It looks like:
trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option.
More here: https://developer.android.com/studio/build/multidex.html