(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
 
其餘相關參考網站
相關文章
相關標籤/搜索