我创建了一个绑定库项目,以便能够运行 Android .aar 文件。我得到的几个错误之一是:
Error CS0115 'Call.OnWarning(IDictionary)': no suitable method found to override TwilioBindings C:\...\TwilioBindings\obj\Debug\generated\src\Com.Twilio.Voice.Call.cs;
为了解决这个问题,我验证了 api.xml并看到onWarning方法有一个类型为java.util.HashMap的参数:
<method abstract="false" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
<parameter name="p0" type="java.util.HashMap">
</parameter>
</method>
Call类扩展了实现RTCMonitorCommand.Listener的InternalCall,在我检查了api.xml文件后,我注意到onWarning方法具有以下定义:
内部通话:
<method abstract="false" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
<parameter name="warningDetails" type="java.util.HashMap<java.lang.String, java.lang.Object>">
</parameter>
</method>
RTCMonitorCommand.Listener:
<method abstract="true" deprecated="not deprecated" final="false" name="onWarning" native="false" return="void" static="false" synchronized="false" visibility="public">
<parameter name="p0" type="java.util.HashMap<java.lang.String, java.lang.Object>">
</parameter>
</method>
所以我得出结论,只有Call类有不同的参数类型。
因此,我在Metadata.xml中编写了以下行来更改类Call中onWarning方法的参数类型:
<attr path="/api/package[@name='com.twilio.voice']/class[@name='Call']/method[@name='onWarning' and count(parameter)=1 and parameter[1][@type='java.util.HashMap']]/parameter[1]" name="type">java.util.HashMap<java.lang.String, java.lang.Object></attr>
错误消失了,但我在使用这个绑定项目时遇到了一些问题,这是Metadata.xml中的行,我不确定这是对的。
有谁知道我的方法是否正确?
任何应感谢的帮助,
谢谢你。