簡體   English   中英

Xamarin .jar綁定 - '無法找到位圖'

[英]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文件。我做了以下步驟:

  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版)?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM