程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Xamarin.ios引用第三方SDK,xamarin.iossdk

Xamarin.ios引用第三方SDK,xamarin.iossdk

編輯:C#入門知識

Xamarin.ios引用第三方SDK,xamarin.iossdk


引言

  誠然,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://files.xamarin.com/~abock/ObjectiveSharpie/ObjectiveSharpie-3.0.8.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/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved