如何为具有许多依赖关系的AAR生成Xamarin绑定?

时间:2016-05-04 17:56:08

标签: android xamarin xamarin.android

我正在尝试为Android com.adobe.creativesdk.image库生成Xamarin绑定

问题是这个库包含20个引用,这些引用肯定包含更多。我必须浏览整个树并提取所有引用以将它们添加到绑定项目中。

当然,必须有一种更简单的方法来做到这一点。有人告诉我,我可以使用Android Studio创建一个包含所有引用的包AAR,但我不确定要使其工作的步骤。一些参考文献也是AAR。

请问您能否使我正确地使用此绑定工作?

3 个答案:

答案 0 :(得分:4)

绑定库总是有自己的注意事项,但我会做一些概括来帮助你保持井井有条。

  1. 检查所涉及的依赖关系,如果其中任何一个已经在Nuget USE THOSE上。诸如Android支持库,Google Play API,IBM SDK等等。大多数已经有绑定并且在Nuget中。

  2. 不要忘记检查您的依赖项版本号与Nuget中的版本号。也许你的.aar lib实际上比Nuget上的Binding更新。

  3. 分开大型图书馆。找到Nuget中不存在相对较大的其他依赖项,然后为每个依赖项创建单独的Android绑定库项目。通常,绑定API会因大型库作为依赖关系而分崩离析,因此为它们创建单独的项目(然后将项目引用添加到最终库)要容易得多(并且更清晰IMO)。

  4. jarsaars分开。通常,您的.aar文件是最重要的文件,无论如何都会获得自己的绑定并循环到#3,但jar依赖项应使用ReferenceJar构建操作。

  5. 使用MetaData.xml进行游戏。这可能需要很长时间,但Binding API并不完美。使用MetaData和其他文件可以根据自己的喜好对其进行清理。

  6. 其他一些可能有用的事情:

答案 1 :(得分:1)

我有同样的问题,我终于通过简单地添加依赖项来解决它。许多可以通过NuGet包添加(右键单击bindingproject并单击添加nuget包...),最常见的一些如play服务,gson okhttp3等可以在这里找到。如果你和我一样,有一些不常见的依赖项,你可能需要将它们作为绑定项目本身添加。

我读到你可以直接将bind / jar依赖项添加到bindingproject,并将build action设置为referenceJar或embeddedReferenceJar,但这对我不起作用。我是相对较新的xamarin所以我不确定它是不是它的意图使用的方式,或者是因为它们不能自动绑定由于执行错误(得到一些错误和警告,我需要修复元文件时我后来将依赖jar / aar添加到它自己的bindingsproject中。

无论如何,我让它工作的方式是在解决方案中添加一个新的bindingsproject,在其中我添加了依赖jar / aar然后构建它并在元文件中添加所需的行/节点以使其编译。然后我只是在我的实际bindingsproject中添加了“依赖绑定”项目作为参考。

这更像是一种解决方法,而不是一种实际解决方案,但至少我让它起作用,所以希望它可以帮助你。

答案 2 :(得分:0)

对于需要在aar / jar java依赖项周围创建包装器以使其与C#配合使用的任何人,请注意。 您最好通过绑定dll引用aar依赖关系,而不是尝试将其添加到同一绑定中,xamarin每次绑定不能使用多个aar。 用自己的aar / binding编写包装器,并让包装器绑定/ dll将依赖项也作为绑定/ dll引用。 另外-与使用jar文件相比,最好使用aar文件,这些天jar似乎已经过时了。