微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 FlirOne AAR 与 Xamarin 绑定

如何解决将 FlirOne AAR 与 Xamarin 绑定

我正在尝试在 Xamarin 项目中使用 FlirOne Thermal SDK。到目前为止,我已经使用以下映射为 heatsdk-release.aar 和 androidsdk-release.aar 库创建了绑定项目:

//EnumMethods.xml
<enum-method-mappings>
  <mapping jni-class="javax/jmdns/impl/DNSCache">
    <method jni-name="entrySet" parameter="return" clr-enum-type="System.Collections.ICollection" />
  </mapping>

  <mapping jni-class="javax/jmdns/impl/DNSCache._CacheEntry">
    <method jni-name="getKey" parameter="return" clr-enum-type="java.lang.Object" />
  </mapping>

  <mapping jni-class="javax/jmdns/impl/DNSCache._CacheEntry">
    <method jni-name="getValue" parameter="return" clr-enum-type="java.lang.Object" />
  </mapping>

  <mapping jni-class="javax/jmdns/impl/JmDNSImpl.ServiceTypeEntry.SubTypeEntry">
    <method jni-name="getKey" parameter="return" clr-enum-type="java.lang.Object" />
  </mapping>

  <mapping jni-class="javax/jmdns/impl/JmDNSImpl.ServiceTypeEntry.SubTypeEntry">
    <method jni-name="getValue" parameter="return" clr-enum-type="java.lang.Object" />
  </mapping>

  <mapping jni-class="javax/jmdns/impl/JmDNSImpl.ServiceTypeEntry">
    <method jni-name="entrySet" parameter="return" clr-enum-type="System.Collections.ICollection" />
  </mapping>
</enum-method-mappings>

//Metadata.xml
<Metadata>
  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createDirectory' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="visibility">public</attr>
  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createDirectory' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="final">true</attr>
  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createDirectory' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IUsbFile</attr>

  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createFile' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="visibility">public</attr>
  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createFile' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="final">true</attr>
  <attr path="/api/package[@name='com.github.mjdev.libaums.fs.fat32']/class[@name='FatDirectory']/method[@name='createFile' and count(parameter)=1 and parameter[1][@type='java.lang.String']]" name="managedReturn">IUsbFile</attr>

  <attr path="/api/package[@name='com.flir.thermalsdk.live.remote']/class[@name='RemoteMeasurementType']" name="visibility">public</attr>
</Metadata>

在演示应用程序中,我添加了对绑定库(AndroidSdkBinding、ThermalSdkBinding)的引用,在构建项目后,我在以下 java 类中收到错误

package mono.com.flir.thermalsdk.androidsdk.live.connectivity;


public class UsbPermissionHandler_UsbPermissionListenerImplementor
    extends java.lang.Object
    implements
        mono.android.IGCUserPeer,com.flir.thermalsdk.androidsdk.live.connectivity.UsbPermissionHandler.UsbPermissionListener
{
/** @hide */
    public static final String __md_methods;
    static {
        __md_methods = 
            "";
        mono.android.Runtime.register ("Com.Flir.Thermalsdk.Androidsdk.Live.Connectivity.UsbPermissionHandler+IUsbPermissionListenerImplementor,AndroidSdkBinding",UsbPermissionHandler_UsbPermissionListenerImplementor.class,__md_methods);
    }


    public UsbPermissionHandler_UsbPermissionListenerImplementor ()
    {
        super ();
        if (getClass () == UsbPermissionHandler_UsbPermissionListenerImplementor.class)
            mono.android.TypeManager.Activate ("Com.Flir.Thermalsdk.Androidsdk.Live.Connectivity.UsbPermissionHandler+IUsbPermissionListenerImplementor,"",this,new java.lang.Object[] {  });
    }

    private java.util.ArrayList refList;
    public void monodroidAddReference (java.lang.Object obj)
    {
        if (refList == null)
            refList = new java.util.ArrayList ();
        refList.add (obj);
    }

    public void monodroidClearReferences ()
    {
        if (refList != null)
            refList.clear ();
    }
}

我在构建后收到以下错误

UsbPermissionHandler_UsbPermissionListenerImplementor 不是抽象的,并且不会覆盖 UsbPermissionListener 中的抽象方法 error(ErrorType,Identity)。

我可以临时修改这个类并添加“抽象”修饰符,我可以看到以下工作。

using Com.Flir.Thermalsdk;
using Com.Flir.Thermalsdk.Androidsdk;

ThermalSdkandroid.Init(ApplicationContext);
showSDKversion(ThermalSdkandroid.Version);
showSDKCommitHash(ThermalSdkandroid.CommitHash);

我可以在这里做些什么来正确生成 java 类?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。