【问题标题】:How to build Android Bindings Library for Cloudinary?如何为 Cloudinary 构建 Android 绑定库?
【发布时间】:2017-09-23 11:42:02
【问题描述】:

我正在尝试为 Cloudinary 构建 Android 绑定库,但遇到了构建错误,指出“没有找到合适的方法来覆盖”。我正在寻找解决办法。同时……

当我按照这个关于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.

【问题讨论】:

    标签: android xamarin cloudinary


    【解决方案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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2015-09-17
      • 1970-01-01
      相关资源
      最近更新 更多