Xamarin Android 绑定引用 Org.Apache.Xml.Security.Algorithms

Xamarin Android Binding referencing Org.Apache.Xml.Security.Algorithms

我正在尝试创建一个引用 org.apache.xml.security.transforms 、Org.Apache.Xml.Security.Algorithms

的 Xamarin Android 绑定库

我必须添加哪个参考以确保它工作正常?

错误示例

1>BINDINGSGENERATOR:警告 BG8900:类型 org.apache.xml.security.transforms。转换:FxDG 命名冲突:类型名称 'Transforms' 匹配命名空间部分 'Transforms'。

\obj\Debug\generated\src\Org.Apache.Xml.Security.Algorithms.Implementations.IntegrityHmac.cs(150,20,150,31):警告 CS0108:'IntegrityHmac.IntegrityHmacRIPEMD160.GetDHandler()' 隐藏继承成员 'IntegrityHmac.GetDHandler()'。如果要隐藏,请使用 new 关键字。

这些不是错误,而是绑定生成器给您一些合理的警告。

1>BINDINGSGENERATOR : warning BG8900: Type org.apache.xml.security.transforms.Transforms: FxDG naming violation: Type name 'Transforms' matches namespace part 'Transforms'.

这只是一个警告,告诉您名称 Transforms 与先前命名空间 org.apache.xml.security.transforms 的一部分相匹配。同样,这不是一个大问题,除非这些 类 没有生成。

\obj\Debug\generated\src\Org.Apache.Xml.Security.Algorithms.Implementations.IntegrityHmac.cs(150,20,150,31): warning CS0108: 'IntegrityHmac.IntegrityHmacRIPEMD160.GetDHandler()' hides inherited member 'IntegrityHmac.GetDHandler()'. Use the new keyword if hiding was intended.

此警告表示 IntegrityHmac.IntegrityHmacRIPEMD160GetDHandler() 实现被隐藏。通常这是混淆问题。

我确实有一份通用的装订指南,一旦您知道自己在寻找什么,它就涵盖了其中的大部分内容:

https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb

但是在查看了您的源代码之后,似乎一切都编译得很好。这里有几点说明:

  1. 确保您使用正确的 JDK 进行编译。我使用 JDK 1.8 来测试你的,但你绑定的 SDK 文档可能使用不同的版本。
  2. 确保您为 JAR 使用正确的 Build Action。您可以在我们的文档中找到一个推荐的用例:https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/#Build_ActionsInputJar 没有嵌入到 .dll 中,必须在运行时找到。因此您应该使用 EmbeddedJar