(7) 引用Objective-C class library

原文 引用Objective-C class libraryios

这个范例是如何在Xamarin.ios中去使用一个咱们自行在Xcode中开发的Objective-c Class Library. 主要会执行的步骤以下objective-c

  1. 在Xcode 里面去创建一个Class Library
  2. 编译这个Class Library让他同时支持IOS Device与 iOS simulator
  3. 使用Objective Sharpie Tool创建Matadata
  4. 在Xamarin中创建IOS Binding Project
  5. 在Xamarin IOS APP 项目中参考 IOS Binding Project.
1. 在X-Code里面创建一个Static class Library

1.1在xode里面创建一个Static class Library , 命名为[sharecode]api

  • 在sharecode.h档案中宣告一个名称为test的方法,而且让这个方法回传一个NSString

sharecode.h
#import <Foundation/Foundation.h>
@interface sharecode : NSObject{
}
- (NSString *)test;
@end
xcode

  • 在sharecode.m档案中实做这个 - (NSString *)test 方法,让他回传一个字符串

sharecode.m
#import "sharecode.h"
@implementation sharecode
-(NSString *) test{
return @"Hello Binding";
}
@end
架构

1.2在命令提示字符接口中以Xcodebuild编译这个项目
预设static library编译后只能给ARM架构 的IOS Device 执行, 因为iOS仿真器属于X86架构, 所以须要再编译一份程序让仿真器执行. 请在终端机接口中用xcodebuild指令来产生相对应的档案iphone

  • 产生iOS simulator 用的档案
    xcodebuild -sdk iphonesimulator -configuration Debug
  • 产生 IOS Device 用的档案
    xcodebuild -sdk iphoneos -arch armv7 -configuration Debug

1.3使用lipo指令将.a档案包成一个单一档案
将上一个步骤产生出来的档案透过lipo指令打包成一个单一档案.范例程序请参考下方
lipo -create -output libsharecode.a libsharecode-armv7.a libsharecode-i386.aide

lipo -create -output test.a ./build/ Debug-iphoneos/ libtest.a ./build/Debug-iphonesimulator/ libtest.a网站

2. 使用Objective Shapie tool创建头文件

2.1 下载objective sharpie toolui

2.2 选择Header File 这个步骤要去选择到咱们在Xcode里面开发的class library [sharecode] 里面的interface档案.[Sharecode.h] 选择完毕后按[Next]进到下一步.
2.3 指定Namaspace. 这里须要指定namespace名称 , 在后面Xamarin.ios项目会依据这个namespace来参照到你的Class library..
2.4 储存metadata档案. 指定Namespace后, Objective sharpie会自动创建一个Metadata档案.这时选择你想要储存的地方来储存这的档案.
3. 创建Xamarin IOS binding project
3.1在Xamarin里面新建一个IOS Binding项目 
这个项目是用来Binding用Xcode开发出来的Class Library. 在创建Xamarin项目时选择Xamarin >> New >> IOS >> IOS Binding Project

3.2调整iOS Binding 项目 
3.2.1 修改 ios xcode binding 项目的ApiDefinition.cs 
将刚刚由Objective sharpie帮咱们创建的Matadata档案内容复制到ios xcode binding里面的ApiDefinition.csspa


3.2.2 在ApiDefinition.cs档案中有两个地方要作修正.

  1. 删除 [Export] 里面的 Verify片断. 
    Verify ("ObjC method massaged into getter property","/Users/benlu/Projects/Xamarin_ios_lab/BindingObjective-c/sharecode/sharecode/sharecode.h", Line = 15)

删除后的结果以下:

2.确认在Public partial interface 后面的名称大小写与咱们在Xcode 中创建的Class library名称是同样的.

3.3在IOS Binding项目中把Xcode class library中编译 .a的项目加进来而后编译这个项目

4.创建Xamarin IOS 项目
4.1在Xamarin里新建一个IOS iPhone专案 这边选择Xamarin >> New >> IOS >>IPhone storyboard >>Single View Application, 而后在Xamarin项目里面将IOS Binding project 中的dll档案加进参考
4.2 这时就能够在Xamarin IOS iPhone 项目里面参考并使用在Xcode中开发的objective-c class library
 
其余相关参考网站
相关文章
相关标签/搜索