如何为Cloudinary构建Android Bindings库?

时间:2017-04-26 07:43:19

标签: android xamarin cloudinary

我正在尝试为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

1 个答案:

答案 0 :(得分:1)

jar中有两个类也是包名(ApiTransformation)。 Java是可以的,但是Xamarin / C#并没有那么多。为了使其工作,您必须更改类的名称,以便它们不会相互干扰。

另一个问题是有两个派生类(ExpressionCondition)具有泛型返回类型的方法 - 这对Xamarin也不适用。可以通过强制它们返回Object来修复它。

所以,在实践中:两个独立的jar绑定项目。一个包含一个jar,com.cloudinary.core一个,构建操作设置为EmbeddedJarmetadata.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,其构建操作为EmbeddedJarcom.cloudinary.core,构建操作设置为ReferenceJar

然后你只需要在你打算使用Cloudinary的项目中添加两个dll文件作为引用。