我需要使用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。
非常欢迎任何帮助。
答案 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
包添加到绑定项目中。
最后,您将在项目结构中有类似的内容:
希望有所帮助!