У меня есть файл .jar
с интерфейсом Java под названием MyService
, который имеет метод:
boolean printBitmapObject(android.graphics.Bitmap bitmap, byte[] result);
Я хотел бы использовать этот файл .jar
в С# в своем проекте Android Xamarin в Visual Studio 2015. Я сделал следующие шаги:
- Я создал новый проект привязки библиотеки.
- Я поместил файл
.jar
в каталогJars
нового проекта с свойствомBuildAction
, установленным наInputJar
. - Проект был успешно выполнен.
- Я добавил ссылку на проект, связанный с библиотекой, в мой основной проект.
К сожалению, я больше не могу строить свой основной проект, потому что в автогенерированном С# -коде есть ошибка:
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)?