Xamarin QQ Sdk的简单绑定过程

Posted 古韵古风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xamarin QQ Sdk的简单绑定过程相关的知识,希望对你有一定的参考价值。

      项目中要用到分享功能,但是又不想用第三方的分享Sdk,所有就直接去绑定原生Sdk来实现。这里简单记录一下ios下QQ SDK的绑定过程,以备以后查询。

      前面的准备工作就不说了,这里是在安装好Xcode,Sharpie的情况下去绑定。在这里碰到一个坑,如果你安装的Sharpie版本是3.4以下的版本,使用以下命令是没有问题的,可以正常生成ApiDefinition.csStructs.cs两个文件

sharpie bind --output=Static -namespace=TecentIM -sdk=iphoneos11.2 Headers/*.h

但是如果是3.4版本,那么使用上面的命令就会生成巨大的文件,本来就是几十K的文件,结果生成出来是几M的文件,很明显是不对的,这里我们就要在命令里面多加个参数-scope Headers。命令如下:

sharpie bind --output=Static -namespace=TecentIM -sdk=iphoneos11.2 
-scope Headers
 Headers/*.h

正确生成这两个文件后,我们来新建iOS绑定库。这个必须要在Mac上来生成了。新建项目后,我们把刚才的两个文件替换掉项目里面的同名的文件。把ios Sdk添加到项目的本地应用里面。然后我们就可以尝试生成项目了,会发现有不少的错误,首先来修改Structs.cs文件里面的内容,会发现有写枚举是继承uint,我们把它删除掉,

{0B1A40B7-9410-B557-F9B5-BC9816AE24BF}

如果有Verify的特性在的话也统统删除掉。ApiDefinition.cs文件里面带Verify特性的也全部删除掉此特性。接着重新编译项目,会发现如下错误:

 

{7E22876F-EE18-7E6A-3C3C-3245B8011842}

我们看下错误提示是没有找到此接口类型,我们看上面的注释,很显然这里应该是TencentLoginDelegate,TencentWebViewDelegate。接着看下个错误:

{E328F246-3DFC-3071-C227-C871752E2367}

重复定义Static,我们把这行删除掉。

{C621F343-8231-000B-4A09-67811395F967}

这里TencentAuthorizeState是一个枚举类型,在C#中不是这样用的,修改下定义

{6DE05301-8E80-2E91-1B56-2ACF65620003}

接着我们在尝试编译项目,发现成功了。接下来我们应该做什么那,我们要看下该SDK依赖哪些库,我们要把这些库加进去,否则在项目中使用的时候会报错,依赖的静态库有如下这些:

SystemConfiguration CoreTelephony QuartzCore CoreGraphics Security

依赖的动态库有如下这些:

-ObjC -fobjc-arc -lstdc++ -lz -dead_strip -lsqlite3 -lc++ -liconv

{76C2AA61-30B6-6CA5-A2BE-A445311425C4}

 

 

以上是关于Xamarin QQ Sdk的简单绑定过程的主要内容,如果未能解决你的问题,请参考以下文章

xamarin.android 绑定百度地图SDK遇到的问题

为 Xamarin iOS 创建 Aviary SDK 绑定

Xamarin AAR结合。某些类不包含在绑定中

Xamarin.Forms 调用 腾讯地图SDK

WorldPayCSE 的 Xamarin IOS 绑定库

Xamarin Forms + Mvvmcross绑定命令不起作用