[英]Xamarin .jar binding - 'Bitmap could not be found'
我有一個帶有Java接口的.jar
文件,名為MyService
,它有一個方法:
boolean printBitmapObject(android.graphics.Bitmap bitmap, byte[] result);
我想在Visual Studio 2015的Android Xamarin項目中使用C#中的.jar
文件。我做了以下步驟:
.jar
文件放入新項目的Jars
目錄中,並將BuildAction
屬性設置為InputJar
。 不幸的是,我無法構建我的主項目,因為自動生成的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版)?
Jar綁定不適用於Android Library Projects,您需要包含.aar
文件。 Jar文件不引用jar中的特定於android的庫,但是.aar
文件正確引用了所有必需的android相關庫。
我有一段時間沒玩過Xamarin,但Android.Graphics.Bitmap命名空間屬於Java語言,而不是c#。 因此生成的c#代碼對該命名空間一無所知。
因此,我會嘗試using System.Drawing;
添加using System.Drawing;
而不是using Bitmap = Android.Graphics.Bitmap
如果編譯器無法識別System.Drawing命名空間,您可能還必須手動添加該DLL作為對C#項目的引用。
讓我知道這是如何工作的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.