Xamarin.ios引用第三方SDK
引言
诚然,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/
Xamarin.ios引用第三方SDK的更多相关文章
- iOS 静态库生成(引用第三方SDK、开源库、资源包)
一.静态库创建 打开Xcode, 选择File ----> New ---> Project 选择iOS ----> Framework & Library ---> ...
- AIR Native Extension for iOS 接入第三方sdk 如何实现 AppDelegate 生命周期
作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/6492385.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 去年到今年做 ...
- unity 引入 ios 第三方sdk
原地址:http://blog.csdn.net/u012085988/article/details/17785023 unity开发中ios应用时,要想成功引入第三方sdk,首先得知道c#与obj ...
- Xamarin.iOS调试提示需要iOS SDK
Xamarin.iOS调试提示需要iOS SDK 错误信息:The version of Xamarin.iOS requires th iOS 9.3 SDK (shipped with Xco ...
- Xamarin SQLite教程Xamarin.iOS项目添加引用
Xamarin SQLite教程Xamarin.iOS项目添加引用 使用直接方式访问SQLite数据库,需要将System.Data和Mono.Data.SQlite库导入到创建的项目中.下面将分别讲 ...
- [Xamarin.iOS] 如何引用Objective-c寫的Class Library (转帖)
這個範例是如何在Xamarin.ios中去使用一個我們自行在Xcode中開發的Objective-c Class Library. 主要會執行的步驟如下 1. 在Xcode 裡面去建立一個Class ...
- IOS 编程中引用第三方的方类库的方法及常见问题
方法一:直接复制全部源文件到项目中 这样的方法就是把第三方类库的全部源文件拷贝到项目中,直接把全部.h和.m文件拖到XCode项目中就可以. 注意: 1. 假设第三方类库引用了一些系统自带类库,那么在 ...
- 解决iOS第三方SDK之间重复的symbols问题
前言:今天公司项目准备使用高德导航,其中用到了高德3D地图SDK,然后就出现bug了.在真机上可以完美运行,但是在模拟器上,就出现了一大片的bug:提示有82个Duplicate symbols,仔细 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
随机推荐
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- Hadoop学习笔记—14.ZooKeeper环境搭建
从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...
- Angular遇上CoffeeScript - NgComponent封装
CoffeeScript是基于JavaScript的一门扩展小巧语言,它需要编译成JavaScript,然后再运行与浏览器或者Nodejs平台.JavaScript由于商业原因10天时间就匆忙诞生,所 ...
- 迷你MVVM框架 avalonjs 入门教程
新官网 请不要无视这里,这里都是链接,可以点的 OniUI组件库 学习教程 视频教程: 地址1 地址2 关于AvalonJs 开始的例子 扫描 视图模型 数据模型 绑定 作用域绑定(ms-contro ...
- yar框架使用笔记
Yar是什么 Yar是并行的RPC框架(Concurrent RPC framework),Laruence开发. 安装 下载地址:http://pecl.php.net/package/yar wi ...
- 2013 duilib入门简明教程 -- XML配置界面(6)
前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言 ...
- 浅谈JavaScript之原型
上一篇谈new关键字也是给这一篇写关于原型的文章买个伏笔,我对原型的理解可能会有偏差,如有错误,望指正一定修改,望各位道友如果想真正的理解原型的概念一定要再看完各方言论再回归教材. 言归正传谈原型,首 ...
- lintcode 最长上升连续子序列 II(二维最长上升连续序列)
题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 I ...
- 【结果很简单,过程很艰辛】记阿里云Ons消息队列服务.NET接口填坑过程
Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的 ...
- Neutron 功能概述 - 每天5分钟玩转 OpenStack(65)
从今天开始,我们将学习 OpenStack 的 Networking Service,Neutron.Neutron 的难度会比前面所有模块都大一些,内容也多一些.为了帮助大家更好的掌握 Neutor ...