引言

  诚然,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的更多相关文章

  1. iOS 静态库生成(引用第三方SDK、开源库、资源包)

    一.静态库创建 打开Xcode, 选择File ----> New ---> Project  选择iOS ----> Framework & Library ---> ...

  2. AIR Native Extension for iOS 接入第三方sdk 如何实现 AppDelegate 生命周期

    作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/6492385.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 去年到今年做 ...

  3. unity 引入 ios 第三方sdk

    原地址:http://blog.csdn.net/u012085988/article/details/17785023 unity开发中ios应用时,要想成功引入第三方sdk,首先得知道c#与obj ...

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

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

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

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

  6. [Xamarin.iOS] 如何引用Objective-c寫的Class Library (转帖)

    這個範例是如何在Xamarin.ios中去使用一個我們自行在Xcode中開發的Objective-c Class Library. 主要會執行的步驟如下 1. 在Xcode 裡面去建立一個Class ...

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

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

  8. 解决iOS第三方SDK之间重复的symbols问题

    前言:今天公司项目准备使用高德导航,其中用到了高德3D地图SDK,然后就出现bug了.在真机上可以完美运行,但是在模拟器上,就出现了一大片的bug:提示有82个Duplicate symbols,仔细 ...

  9. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

随机推荐

  1. 给你的应用“一只”智慧的眼睛 —— Barcode常识普及以及识别信息处理

    在“如何用MediaCapture解决二维码扫描问题”这篇文章中,我们通过“成像”.“截图”与“识别”三个步骤介绍了使用MediaCapture扫码的主要过程及注意事项.本文主要针对“识别”的过程,对 ...

  2. 用chrome来映射查找样式对应的sass

    较新版本的sass(3.3+)支持source-map功能,可以配合谷歌浏览器或者livestyle来映射查找对应的样式. 要生成source-map可以在grunt中使用 grunt-contrib ...

  3. ASP.NET MVC项目实践技巧

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 在.NET开发初期,微软提供的WEB开发模型是WebForm,试图消除Web和桌面的隔阂,建立一致的开发体验.但是 ...

  4. 将nuget与VS直接集成,实现一键上传等功能

    nuget是一个非常方便的包管理工具,很多团队为了开发的方便也建立了自己的包源网站(nuget.server),本篇文章是笔者在配置nuget上面的一点小体,其最终目标是要达到能够在VS里一键打包上传 ...

  5. 没有Hyper-V服务,WP Emulator无法启动

    解决: 打开管理工具

  6. OpenCASCADE Conic to BSpline Curves-Parabola

    OpenCASCADE Conic to BSpline Curves-Parabola eryar@163.com Abstract. Rational Bezier Curve can repre ...

  7. TSQL语句

    1.创建数据库create database test3;2.删除数据库drop database test3;3.创建表create table test(    code varchar(20), ...

  8. 谈谈基于OAuth 2.0的第三方认证 [下篇]

    从安全的角度来讲,<中篇>介绍的Implicit类型的Authorization Grant存在这样的两个问题:其一,授权服务器没有对客户端应用进行认证,因为获取Access Token的 ...

  9. MySQL学习笔记之MySQL安装详解

    前言 虽然现在NoSQL发展迅速,但MySQL还是非常受欢迎的,成千上万的公司依旧采用LAMP OR LNMP的搭配来进行开发,因此MYSQL的学习还是有一定的必要. 安装环境:Windows 7,需 ...

  10. EntityFramework 7 Linq Contains In 奇怪问题(已修复)

    问题说明: 博客问题纪录 Use EF7, Linq Contains In is error. EF7 Code Commit adding (client side) support for Co ...