Xcode開發framework包的一些經驗

2021-08-29 09:54:57 字數 1795 閱讀 9046

最近要做乙個ios上的藍芽sdk,研究了下framework,經過半個多月的折騰終於有了結果。再次吐槽下關於程式設計的中文網頁質量之低。

首先是在xcode中建立工程,編寫**,專案名為blesdk,這個名字後面還會用到。建立專案的時候記得設定為cocoa touch framework,如圖

這裡寫描述

編譯庫的時候要注意,基於發布狀態有debug和release兩種選擇,然後基於模擬器和真機又有兩種選擇,這樣合起來就有四種狀況,我們把這四種情況都演習一遍。

選中上方的選單,product->scheme->edit scheme,

這裡寫描述

出來如下的對話方塊

這裡寫描述

可以看到這裡是執行debug和release的選擇的,真機和模擬器的選擇在target這裡,選擇真機就按真機編譯,選擇模擬器就按模擬器編譯。

這裡寫描述

挨個編譯一遍後,我們發現左下角的blesdk.framework由紅字變為黑字了,在其上右鍵彈出選單,選擇show in finder,然後退到上一級選單,可以看到如下場景

這裡寫描述

為了後面操作方便,我們把這四個framework複製貼上到同乙個路徑下面,略微改個名字,防止檔名相同而覆蓋,如下圖

這裡寫描述

下面我們再來進行最重要的合併工作,命令列進入當前目錄,用lipo命令檢視這幾個framework

這裡寫描述

可以看到,真機是按照arm7和arm64生成的,模擬器是按照x86_64和i386生成的,所以我們只要合併releasesim和releaseios兩個檔案,就能覆蓋所有的狀態。那麼如何合併呢?

首先我們建立乙個新目錄,將其改名為final.framework,其圖示會變為framework一樣的樂高積木圖示。

然後呼叫此命令

lipo -create

releasesim.framework/blesdk

releaseios.framework/blesdk

-output

final.framework/blesdk

命令執行完畢後,我們可以開啟這個final.framework和兩個源framework,看到如下的內容

這裡寫描述

仔細點進去看,就會發現兩個源framework裡面的headers是一樣的,info.plist也是一樣的,modules中都是和自己平台對應的檔案,將這些資料夾全部複製貼上到final.framework中,modules資料夾記得選擇合併而不是覆蓋

Sensor啟動分發流程 Framework

sensor frameowk層的初始化主要由systemservcer,android.hardware.sensors 1.0 service來共同完成。1.systemserver 2.android.hardware.sensors 1.0 service android.hardware....

Xcode環境開發leveldb

機器環境 mac os x 10.10.2,xcode 6.1 1 獲取源 2 刪除不必要原始檔 在專案資料夾下刪除除了testutil.h之外包含 test 的源 檔案 其他檔案不必要檔案 find name test grep v testutil.h xargs rm rm db leveld...

提高Xcode開發效率

工程很大,電腦很差 主要因為沒有固態硬碟!從頭編譯要十多分鐘,每次開機xcode執行index也要十多分鐘,因此記錄下優化的方法。1.debug模式下不生成dsym檔案 2.使用ram磁碟 1 刪除derivedata rm rf library developer xcode deriveddat...