我正在尝试为Cloudinary构建一个Android Bindings库,并且遇到了构建错误,并且没有找到合适的方法来覆盖"。我正在寻求一个决心。同时...
当我按照本教程关于building Jar Reference Lib Project,添加cloudinary-core.1.9.1.jar (maven)时,会出现以下构建错误:
CS0234 The type or namespace name 'AbstractFileComparator' does not exist in the namespace 'Org.Apache.Commons.IO.Comparator' (are you missing an assembly reference?) C:\Users\...\documents\visual studio 2015\Projects\solution\project\obj\Debug\generated\src\Org.Apache.Commons.IO.Comparator.CompositeFileComparator.cs
命名空间' Com.Cloudinary'已包含' Api'的定义 还有很多人喜欢:'一些公共方法':找不到合适的方法来覆盖
参考文献: Cloudinary github repo
答案 0 :(得分:1)
jar中有两个类也是包名(Api
和Transformation
)。 Java是可以的,但是Xamarin / C#并没有那么多。为了使其工作,您必须更改类的名称,以便它们不会相互干扰。
另一个问题是有两个派生类(Expression
和Condition
)具有泛型返回类型的方法 - 这对Xamarin也不适用。可以通过强制它们返回Object
来修复它。
所以,在实践中:两个独立的jar绑定项目。一个包含一个jar,com.cloudinary.core
一个,构建操作设置为EmbeddedJar
,metadata.xml
看起来像这样:
<metadata>
<attr path="/api/package[@name='com.cloudinary']/class[@name='Api']" name="managedName">CldApi</attr>
<attr path="/api/package[@name='com.cloudinary']/class[@name='Transformation']" name="managedName">CldTransformation</attr>
<attr path="/api/package[@name='com.cloudinary.transformation']/class[@name='Expression']/method[@name='newInstance']" name="managedReturn">Java.Lang.Object</attr>
<attr path="/api/package[@name='com.cloudinary.transformation']/class[@name='Condition']/method[@name='newInstance']" name="managedReturn">Java.Lang.Object</attr>
</metadata>
另一个包含两个jar的项目cloudinary-android
,其构建操作为EmbeddedJar
,com.cloudinary.core
,构建操作设置为ReferenceJar
。
然后你只需要在你打算使用Cloudinary的项目中添加两个dll文件作为引用。