Xamarin java绑定忽略了支持jar

时间:2014-09-02 19:06:34

标签: android jar xamarin

我需要使用http://viewpagerindicator.com/在Xamarin.Android项目的操作栏下添加静态标签。

我下载了项目并将其从maven迁移到gradle,将其构建为适合Xamarin消费的AAR文件。我创建了一个java绑定项目,将AAR文件添加为LibraryProjectZip,并将v13支持jar添加为ReferenceJar,但它似乎正在某些地方丢失,如这些xbuild日志所示:

BINDINGSGENERATOR:  warning BG8C00: For type Com.Viewpagerindicator.IPageIndicator, base interface android.support.v4.view.ViewPager.OnPageChangeListener does not exist.
BINDINGSGENERATOR:  warning BG8800: Unknown parameter type android.support.v4.view.ViewPager.OnPageChangeListener in method SetOnPageChangeListener in managed type Com.Viewpagerindicator.IPageIndicator
BINDINGSGENERATOR:  warning BG8800: Unknown parameter type android.support.v4.view.ViewPager in method SetViewPager in managed type Com.Viewpagerindicator.IPageIndicator

警告链持续很长时间,以严重限制的端口结束该过程 因为缺少的类型会使取决于它们的方法消失。

如果我删除了支持jar,那么构建失败是因为缺少来自名为jar2xml的实用程序的类,这使我相信它只用于部分编译/映射过程。

支持jar取自未修改的android sdk at extras / android / support / v13 / android-support-v13.jar。

非常欢迎任何帮助。

1 个答案:

答案 0 :(得分:2)

有一种解决方法可以使这些事情发挥作用。

在我的例子中,我有2个参考罐(android-support-v4.jar和google-play-services.jar)。 因此,如果您只使用Build Action = ReferenceJar添加这两个罐子,您将看到与发布时相同的错误。

BINDINGSGENERATOR:  warning BG8800: Unknown parameter type com.google.android.gms.maps.model.Marker in managed type Com.Google.Maps.Android.MarkerManager.

尽管在jar中定义了Marker和MarkerManager类,但它们在C#端无法正确解析。要解决这个问题,你需要做的就是为这些jar添加已编译的C#绑定作为引用。

在我的情况下,我使用了Xamarin.GooglePlayServices包,它具有依赖关系Xamarin.Android.Support.v4(就像我的罐子一样)。

在您的情况下,您只需要将Xamarin.Android.Support.v4包添加到绑定项目中。

最后,您将在项目结构中有类似的内容:

Sample structure for Bindings project with same problem

希望有所帮助!