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