У меня есть файл .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)?