我有一个android的.aar文件。我试图在我的xamarin.android应用程序中使用它。我按照链接https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/
中给出的步骤进行操作但是当我尝试构建我的库时,我遇到了错误
“没有实现接口成员'IComparable.CompareTo(Object)'”
我找到了一些解决方案,其中提到在metadata.xml中我们需要添加一些属性。所以我在那里添加了以下行
path="/api/package[@name='com.logicjunction.ljindoorandroidsdk']/class[@name='FloorPlanBeaconsMapping']/implements[@name='java.lang.Comparable']"
名称= “类型” > java.lang.Comparable的>
但仍然得到同样的错误。我怎么解决这个问题?
答案 0 :(得分:5)
在没有接口实现的情况下构建库时出错IComparable.CompareTo:
要解决此问题,需要在“ Additions ”文件夹中创建需要接口成员实现“IComparable.CompareTo(Object)”的库类的部分类,如下所示:
命名空间应该与绑定库相同,在这种情况下,它是:“ Hirondelle.Date4j ”。
using Java.Lang;
namespace Hirondelle.Date4j
{
public partial class DateTime : Object, IComparable
{
int IComparable.CompareTo(Object obj)
{
return CompareTo((DateTime)obj);
}
}
}
然后应该成功建立图书馆。
答案 1 :(得分:2)
所以我遇到了同样的问题,我可以通过帮助编译器在Metada.xml
(Transforms
文件夹中添加这些行)来解决它:
<add-node path="/api/package[@name='<JAVA_PACKAGE_NAME>']/class[@name='<CLASS_NAME>']">
<method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
<parameter name="p0" type="java.lang.Object" />
</method>
</add-node>