• 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}

     

     

  • 相关阅读:
    sqlalchemy presto 时间比较
    python 读取consul配置
    移动平台自动化测试:appium(二)
    移动平台自动化测试:appium(一)
    web自动化测试:watir+minitest(五)
    web自动化测试:watir+minitest(四)
    从智能垃圾桶模型引发的思考?
    AD技巧之敷铜
    AD技巧之如何修改过孔的默认尺寸
    硬件工程师之路之电阻知识
  • 原文地址:https://www.cnblogs.com/zjmsky/p/8298035.html
Copyright © 2020-2023  润新知