引言

  诚然,Xamarin是个优秀的跨平台解决方案,但毕竟还是不能将Native中所有的方法都直接实现。诸如各种第三方库,也都只有java/oc原生版本的SDK,无法直接拿过来直接使用。但,不能直接拿过来用,就没办法扩展APP功能,不能使用已经造好的轮子吗?答案是否定的!Xamarin中可以通过引用java中的Jar包,oc中的A档,实现这一切!

什么是a档?

  a档就是iOS中的class library,我是这么理解为啥叫a档的,因为a档生成的文件扩展名是.a。举个栗子:

如何建立a档

  1、在XCode中建立一个新的project,选择iOS底下的framework&library中的Cocoa Touch Static librar,输入Product Name,选择好存储地址,项目就建立好了。        

  2、项目全貌

  3、点选左边侧边栏中,默认生成的TestClassLib.h文件,在该文件中增加个公开的静态方法。给之后引用该a档的项目调用方法。

  4、接着打开TestClassLib.m,给add方法写上具体实现方法

  5、将项目设定中的CodeSigning设定为Developer。

  6、Build For Running

  7、运行成功后,展开Products文件夹,便能看到我们所需要的a档了。show in finder。在Debug-iphonesimulator中的a档,是给iPhone设备模拟器用了的;Debug-iphoneos中的a档,则是给真机使用。如果打开文件夹后发现,只有一种类型的(如下1图),我们需要重新Build For Running,在重新编译前,在xcode中调整编译目标即可(如下2图),在打开finder,即可看到两种类型(如下3图)

在Xamarin工程中引用a档

  1、在一个现有的Xamarin工程中,添加新的工程,选择类型为Bindings Library的工程,写好工程名,创建成功。

  2、在建好的Bindings Library中,添加现有项目,选择我们刚刚创建的a档,并确认该a档文件的BuildAction为ObjcBindingNativeLibrary。

  3、下载Objective Sharpie——转换c#代码的工具 链接:https://download.xamarin.com/objective-sharpie/ObjectiveSharpie.pkg

    1.打开terminal

    1.确认Xcode的SDK版本,输入 sharpie xcode -sdks

    2.切换到你希望生成文件所在的位置

    3.输入转换指令 sharpie bind -output

    4、sharpie bind -output TestClassLib -namespace TestClassLib -sdk iphoneos9.3 ./TestClassLib/*.h

    

  4、将利用Objective Sharpie生成的ApiDefinitions.cs替换Bindings Library中的ApiDefinition.cs

    注意,工具生成的是ApiDefinitions,而原项目中的是ApiDefinition,多了个s哦,一定不能改着个文件的文件名,否则会报错。

    另,ApiDefinition中的错误不用去理会,build也不会报错。

    

  5、好,至此我们的操作差不多结束了,接下来,编写代码,调用a档中的方法。

    

结束语

  OK,这篇文章算是说完了,虽然没有拿市面上任何一个SDK作例子,但我想,授人以鱼不如授人以渔,知道怎么制作a档,引用a档,大部分SDK,应该都可以搞定了。

  参考资料:https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/

       https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/

转载于:https://www.cnblogs.com/qinhe/p/5506414.html

Xamarin.ios引用第三方SDK相关推荐

  1. iOS架构-静态库.framework(引用第三方SDK、开源库、资源包)(9)

    前面介绍了 静态库.a依赖第三方静态库.a的制作 静态库.framework之依赖第三方库(Cocoapods进行管理) 今天课题: 静态库.framework(引用第三方SDK.framework. ...

  2. Dcloud开发引用第三方sdk的app小程序扫盲---使用第三方sdk并且打包

    经过前几次的文章,app基本成型.运行在手机里应该就能正常使用了. 那么如何引用第三方sdk呢? 难道在hbuilder里面弄个文件夹放jar包么? 显然不是.dcloud本省有集成了部分sdk 但是 ...

  3. Mac安装ruby环境及Xcode安装cocoapods整体流程--ios引用第三方库的环境准备

    发文原由:ios刚用来开发不久,需要在开发时引用第三方库,百度查找了资料,需要先安装ruby环境,再进行cocoapods安装 一.mac安装ruby环境 (引用博客–https://www.cnbl ...

  4. 安卓的第三方sdk是html,第三方SDK目录

    QQ登录/分享 使用目的:帮助用户使用QQ账号登录.使用QQ分享功能 共享的个人信息类型:设备型号.操作系统.IMEI.IP地址.QQ软件版本号.接入网络的方式.类型和状态.网络质量数据.广告标识符. ...

  5. iOS静态库SDK制作(包含第三方静态库)

    本文来自简书,原文地址:http://www.jianshu.com/p/155a3cfb765e 前言 以下所涉及的框架和库只针对iOS而言,不确保在其他平台也适用. 最近由于公司业务需要,要求封装 ...

  6. iOS静态库SDK制作(包含支付宝支付、微信支付或其它第三方静态库)

    前言 以下所涉及的框架和库只针对iOS而言,不确保在其他平台也适用. 最近由于公司业务需要,要求封装一个支付SDK,需要用到微信支付和支付宝,之前做过的Framework没有依赖其他第三方的库所以比较 ...

  7. IOS 编程中引用第三方的方类库的方法及常见问题

    方法一:直接复制全部源文件到项目中 这样的方法就是把第三方类库的全部源文件复制到项目中.直接把全部.h和.m文件拖到XCode项目中就可以. 注意: 1. 假设第三方类库引用了一些系统自带类库.那么在 ...

  8. Xamarin.iOS调试提示需要iOS SDK

    Xamarin.iOS调试提示需要iOS SDK 错误信息:The version of Xamarin.iOS requires th iOS 9.3 SDK (shipped with Xcode ...

  9. Xamarin SQLite教程Xamarin.iOS项目添加引用

    Xamarin SQLite教程Xamarin.iOS项目添加引用 使用直接方式访问SQLite数据库,需要将System.Data和Mono.Data.SQlite库导入到创建的项目中.下面将分别讲 ...

  10. 【iOS】APP IM聊天框架的设计(基于第三方SDK)

    [iOS]APP IM聊天框架的设计(基于第三方SDK) 前言 在开发社交聊天类型的APP的时候,IM是必不可少的功能,而且很多公司的IM服务都是接的第三方的,很少用自研的,国内的IM厂商也都很成熟, ...

最新文章

  1. 给iOS开发者的React Native入门使用教程
  2. 《模拟信息转换器(AIC)的实现技术研究》读书笔记
  3. Redis的安装及使用
  4. css样式教程---css控制背景图片-背景相关的css
  5. 五十七、Servlet工程和Tomcat
  6. wait_timeout【Mysql】解决方案
  7. 关于数据持久化的一个简介
  8. matlab不用循环,三维矩阵按横切页(垂直于纸面且)向右展开为2维,即(i,j,:)展开。将二维矩阵每行顺序不变依次向左复制,如:(a,b,c)复制为(a,a,a,b,b,b,c,c,c)
  9. python中类方法、类实例方法、静态方法的使用与区别
  10. 矩形嵌套-记忆化搜索(dp动态规划)
  11. DB2数据库v11.5下载地址
  12. rose软件下载(Rational Rose 2003 Enterprise Edition)
  13. diabetes影响因子2017_【重磅】2017 年内分泌领域 SCI 期刊影响因子出炉
  14. 支付宝内部功能调用APP的said说明(转载)
  15. 外篇 评相对论
  16. Excel根据手机号区分运营商
  17. 有真正的骨传导耳机吗、骨传导耳机到底好不好用
  18. 专科毕业,从0到1400star,从阮一峰周刊到尤雨溪推荐的开源项目总结
  19. STM32 - ADC采集电压 中断处理
  20. dbus 嵌入式linux,MeeGo操作系统DBus调试工具

热门文章

  1. 只有 IE 才有的 Bug or feature?
  2. 在hisi上QT交叉编译过程(带webengine)
  3. (九)洞悉linux下的Netfilteriptables:网络地址转换原理之DNAT
  4. 有关likely和unlikely??
  5. 高通混频器配置文件如何选择
  6. virt_to_page
  7. 1136 A Delayed Palindrome(20 分)
  8. A - 敌兵布阵(线段树)(单点更新区间求和)
  9. 1.3.2 Barn Repair 修理牛棚
  10. DFS(深度优先搜索,附例题)