在我的Xamarin MvvmCross Android应用程序

时间:2016-11-11 11:25:32

标签: android xamarin push-notification android-support-library mvvmcross

我有一个Xamarin MvvmCross Android应用API 4.1+,它使用平台的推送和映射功能。在最近更新包之后,我再也无法注册推送了。在我的PushRegistrationListener(意图处理程序服务)中,我正在处理注册事件并在var instanceID = InstanceID.GetInstance(this);上收到错误:

  

方法'java.io.File   android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)”   预计是虚拟类型,但发现是类型   direct('java.lang.reflect.ArtMethod'的声明出现在   /system/framework/core-libart.jar)

我发现了很多关于已知的goodle问题和过时的支持库版本的引用,但是所有这些都是半年之久,并且只要我有更高版本的引用包,就不适用。这些是我的包裹:

  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.UI" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.Utils" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Fragment" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Media.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v4" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Base" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Basement" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Gcm" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Location" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Maps" version="29.0.0.2" targetFramework="MonoAndroid60" />
  <package id="Xamarin.GooglePlayServices.Measurement" version="29.0.0.2" targetFramework="MonoAndroid60" />

请告知我该如何调试此问题。

1 个答案:

答案 0 :(得分:2)

问题是您使用的是旧版Google Play Services SDK。即使它是目前(2016年11月14日)Xamarin提供的最新稳定版本,它也不包括Google在version 9.0.1中实施的修复程序。

  

修复了类更改编译错误   ContextCompat.getNoBackupFilesDir()。

Xamarin对Google Play服务Nuget套餐版本号的映射并未很好地映射到官方Google Play服务版本号的版本号。它已在GitHub上记录为问题,他们已开始通过提供mappings的表格来解决此问题:

Nuget mappings to Google Play Services

因此,要获得Google Play Service SDK的有效版本,您必须使用大于30.0.1.alpha4的mpirun -np 1 -host my_host .... 版本。

xamarin/GooglePlayServicesComponents上还记录了一个问题,该问题已通过更新到最新的Beta Nuget软件包得到解决。