Xamarin .jar binding – «Bitmap не найден»

У меня есть .jar файл с интерфейсом Java под названием MyService , который имеет способ:

 boolean printBitmapObject(android.graphics.Bitmap bitmap, byte[] result); 

Я хотел бы использовать этот .jar файл в C # в своем проекте Android Xamarin в Visual Studio 2015. Я сделал следующие шаги:

  1. Я создал новый проект привязки библиотеки.
  2. Я поместил файл .jar в каталог Jars нового проекта с свойством BuildAction установленным в InputJar .
  3. Проект был успешно построен.
  4. Я добавил ссылку на проект, связанный с библиотекой, в мой основной проект.

К сожалению, я больше не могу строить свой основной проект, потому что в автогенерированном C # -коде есть ошибка:

  public interface IMyService : global::Android.OS.IInterface { bool PrintBitmapObject (Bitmap bmp, byte[] result); //"Bitmap" is red underlined } 

С сообщением "The type or namespace name 'Bitmap' could not be found (are you missing a using directive or an assembly reference?)" .

Существует также автогенерируемый абстрактный класс IMyServiceStub , который также не распознает Bitmap . Более того, он не знает какой-то автоматически сгенерированный BitmapStub :

 public abstract class IMyServiceStub : global::Android.OS.Binder, global::Android.OS.IInterface, IMyService { ... protected override bool OnTransact (int code, global::Android.OS.Parcel data, global::Android.OS.Parcel reply, int flags) { ... case TransactionPrintBitmapObject: { data.EnforceInterface (descriptor); Bitmap arg0 = default (Bitmap); //Bitmap red underlined arg0 = BitmapStub.AsInterface (data.ReadStrongBinder ()); //BitmapStub red underlined byte [] arg1 = default (byte []); var result = this.PrintBitmapObject (arg0, arg1); reply.WriteNoException (); reply.WriteInt (result ? 1 : 0); data.WriteByteArray (arg1); return true; } ... } } 

Я попытался добавить using Bitmap = Android.Graphics.Bitmap в автоматически сгенерированный файл, но это не помогает, потому что BitmapStub остается неизвестным, и мои изменения перезаписываются во время следующей сборки.

Есть ли что-нибудь, что я могу сделать, чтобы исправить эту проблему? Или это известная ошибка в Xamarin (я использую версию 4.0)?

Solutions Collecting From Web of "Xamarin .jar binding – «Bitmap не найден»"

Jar binding не будет работать с проектами библиотеки Android, вам нужно включить файл .aar . Файлы Jar не ссылаются на специфические библиотеки Android в jar, но файл .aar правильно ссылается на все необходимые библиотеки, связанные с Android.

Я не играл в Xamarin через некоторое время, однако пространство имен Android.Graphics.Bitmap принадлежит языку Java, а не c #. Таким образом, сгенерированный код c # ничего не знает об этом пространстве имен.

Поэтому я бы попытался добавить using System.Drawing; Вместо using Bitmap = Android.Graphics.Bitmap

Вам также может потребоваться вручную добавить эту DLL в качестве ссылки на проект C #, если компилятор не распознает пространство имен System.Drawing .

Дайте мне знать, как это получается.