1

I've recently updated my Xamarin Android app from Xamarin.Android.Support.* 24.2.1 to Xamarin.Android.Support.* 25.0.1-rc1 and on app startup I get the following crash (100% times):

Java.Interop.JniEnvironmentFile res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052 Raw System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()<8b63ef277e2c4e9d9f893013919f3ba1>:0 Java.Interop.JniEnvironment.InstanceMethods.CallNonvirtualBooleanMethod(JniObjectReference instance, JniObjectReference type, JniMethodInfo method, JniArgumentValue* args)<554948e16e364ff9b0647fa258ff9398>:0 Android.Runtime.JNIEnv.CallNonvirtualBooleanMethod(IntPtr jobject, IntPtr jclass, IntPtr jmethod, JValue* parms)<06feabe0ae89449c881f9479237416ed>:0 Android.Support.V7.App.AppCompatActivity.SupportRequestWindowFeature(int featureId)<2653bed97fbe416083d2f0e662e3d9c0>:0

I'm not using the res/drawable/abc_vector_test.xml resource so not sure what is this crash about.

I'm adding my packages config here:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Bcl" version="1.1.10" targetFramework="MonoAndroid60" />
  <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="MonoAndroid60" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="MonoAndroid60" />
  <package id="modernhttpclient" version="2.4.2" targetFramework="MonoAndroid60" />
  <package id="MvvmCross" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Binding" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Core" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Shared" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Support.Core.UI" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Support.Core.Utils" version="4.4.1" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Support.Fragment" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Support.V4" version="4.4.1" targetFramework="monoandroid70" />
  <package id="MvvmCross.Droid.Support.V7.AppCompat" version="4.4.0" targetFramework="monoandroid70" />
  <package id="MvvmCross.Platform" version="4.4.0" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Compat" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.UI" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.Utils" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Fragment" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Media.Compat" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v4" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="25.0.1-rc1" targetFramework="monoandroid70" />
  <package id="Xamarin.Build.Download" version="0.3.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics.Impl" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Base" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Basement" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Location" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Maps" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Tasks" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.Insights" version="1.12.3" targetFramework="MonoAndroid60" />
</packages>

Rolling back from 25.0.1-rc1 to 24.2.1 solves the issue but I'm worried about future compatibility as long as 25 is in RC.

Mando
  • 11,414
  • 17
  • 86
  • 167
  • 1
    Can you please add your `packages.config` to your question? I tested adding https://www.nuget.org/packages/Xamarin.Android.Support.v7.AppCompat/25.0.1-rc1 to a new project that compiles against API 24, but that builds just fine in `Debug` and `Release` modes. There seems to be something specific going on with your project instead. Try to delete the package cache as found here: https://developer.xamarin.com/guides/android/troubleshooting/resolving-library-installation-errors/#Automatic_Recovery_from_m2repository_Errors – Jon Douglas Dec 12 '16 at 20:21
  • 1
    I believe this is a similar issue: http://stackoverflow.com/questions/39091521/vector-drawables-flag-doesnt-work-on-support-library-24 In specifics, it seems that this item was removed from the 25.0.1 libs as I cannot find it in the `res/drawable` of the 25.0.1 lib, but I can in the 24.2.1 lib. Therefore either MvvmCross is using it in the `MvvmCross.Droid.Support.V7.AppCompat` package, a different dependency is using it, or it's a bug in the binding. – Jon Douglas Dec 13 '16 at 16:43
  • 1
    `MvvmCross` is not using that specific drawable, but we depend directly on a specific Android support library, in this case 24.2.1. As soon as v25 hits stable, we will update out nugets. – Martijn00 Dec 15 '16 at 11:49
  • 1
    I wasn't able to replicate this by a File -> New Android Project and upgrading to `25.0.1-rc1`, and thus I believe one of your dependencies are causing the issue. However I would have to dig deeper. Seeing that Martijn00 says they do not use that drawable, my guess would be GPS! – Jon Douglas Dec 15 '16 at 15:57

1 Answers1

1

Make sure you set this once in your app initialization:

AppCompatDelegate.CompatVectorFromResourcesEnabled = true;

Redwolf
  • 540
  • 4
  • 17
  • This fixed it for me. If it's not clear, make sure that it happens in the constructor of your Application (or your inheritor from it), and before the `OnCreate` method is called. – wislon Oct 02 '18 at 23:56