Xamarin.iOS与第三方框架绑定

我正在尝试更新一个指向我管理的代码的Xamarin.iOS绑定,而我现在遇到了麻烦,因为我用.framework替换了外部.a库引用。 特别是,当我尝试编译我的绑定时,本机链接失败了我替换的库。

Native linking error: framework not found SVGKit for architecture arm64/i386/armv7/armv7s (MT5209) 

我知道SVGKit支持这些体系结构的事实,但我不确定如何在从.framework引用时将它们包含在生成的二进制文件中。

您好我会这样做来诊断问题

首先,我将使用二进制file命令检查SVGKit.framework/SVGKit假框架 (伪装成框架的静态库)还是动态框架( 仅限iOS 8+支持

 file Foo.framework/Foo Foo.framework/Foo: Mach-O universal binary with 4 architectures Foo.framework/Foo (for architecture i386): Mach-O dynamically linked shared library i386 Foo.framework/Foo (for architecture x86_64):Mach-O 64-bit dynamically linked shared library x86_64 Foo.framework/Foo (for architecture armv7): Mach-O dynamically linked shared library arm Foo.framework/Foo (for architecture arm64): Mach-O 64-bit dynamically linked shared library file Bar.framework/Bar Bar.framework/Bar: Mach-O universal binary with 4 architectures Bar.framework/Bar (for architecture armv7): current ar archive random library Bar.framework/Bar (for architecture i386): current ar archive random library Bar.framework/Bar (for architecture x86_64):current ar archive random library Bar.framework/Bar (for architecture arm64): current ar archive random library 

Foo是一个动态库,注意Mach-OBar是一个伪装成ar框架的静态库

现在,如果它是一个假框架 (静态库),只需取SVGKit.framework/SVGKit二进制文件并将其重命名为SVGKit.a并将其添加到绑定项目中,它应该像往常一样工作

如果它是动态框架,那么请按照这些说明进行操作 。[0]

[0]:只是旁注,一旦Xamarin Studio 6.0出来你就不需要手动修改绑定项目.csproj文件了,你将能够在IDE本身内做到这一点:)