我需要使用http://viewpagerindicator.com/在 Xamarin.Android 项目的操作栏下方添加静态选项卡。
我下载了该项目并将其从 maven 迁移到 gradle,以将其构建为适合 Xamarin 使用的 AAR 文件。我创建了一个 java 绑定(bind)项目,将 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,位于 extras/android/support/v13/android-support-v13.jar。
非常欢迎任何帮助。
最佳答案
有一个解决方法可以让这些事情发挥作用。
在我的示例中,我有 2 个引用 jar(android-support-v4.jar 和 google-play-services.jar)。 因此,如果您只是使用 Build Action = ReferenceJar 添加这 2 个 jar,您将看到与您发布的相同的错误。
BINDINGSGENERATOR: warning BG8800: Unknown parameter type com.google.android.gms.maps.model.Marker in managed type Com.Google.Maps.Android.MarkerManager.
尽管 Marker 和 MarkerManager 类是在 jar 中定义的,但它们在 C# 端并未得到正确解析。要解决这个问题,您需要做的就是为这些 jar 添加已编译的 C# 绑定(bind)作为引用。
就我而言,我使用了 Xamarin.GooglePlayServices
包,它具有依赖项 Xamarin.Android.Support.v4
(与我的 jar 完全相同)。
就您而言,您只需将 Xamarin.Android.Support.v4
包添加到绑定(bind)项目中。
最终,您的项目结构中将会有这样的内容:
希望有帮助!
关于android - Xamarin java 绑定(bind)忽略支持 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630552/