1. 程式人生 > >ios 打包framework 合併真機和模擬器framework

ios 打包framework 合併真機和模擬器framework

前言
如果想將自己開發的控制元件、程式碼與別人分享,首先我們可以直接提供原始碼檔案。但是,有時候我們並不想別人看到我們程式碼的實現,而這些實現我們可能並不想開源出來。別人也不想將我們寫的程式碼都拖到專案中,他們只是需要一種簡單的方法來編譯你的程式碼,使得你的程式碼易使用,並且在多個工程中易複用。所以我們需要的是一種方法來打包你的靜態庫,將所有的標頭檔案放到一個單元中,這樣你就可以立刻將其加入到你的專案中並使用。
OS X完美地支援這一點,因為Xcode就提供了一個專案模板,包含著預設構建目標(target)和可以容納類似於圖片、聲音、字型等資源的檔案。你可以為iOS建立Framework,不過這是一個比較複雜的手工活,如果你跟著教程走,你將學到怎麼樣跨過路障,順利地完成Framework的建立。

下面我們就來進行打包Framework
一 目標
本文將基於Xcode9建立一個簡單的工程,來教大家如何製作一個自己的framework,目的就是簡單易學的製作framework。這種方法可以使得你的程式碼易分享,在多個工程中複用,並且可以隱藏實現細節,控制公開的標頭檔案。
二 步驟
1、開啟Xcode,新建工程。
不要選擇“Application”,選擇“Framework & Library”。選擇第一個,然後Next。
選擇如圖
建立專案如圖

2、建立功能類。

首先建立一個繼承自NSObject的HelloWorld類
在這裡插入圖片描述
3、實現功能。
在新建立的類裡面宣告方法並實現。這裡我寫一個helloWorld的方法

HelloWorld.h

#import <Foundation/Foundation.h>
@interface HelloWorld : NSObject

  • (void)helloWorld;
    @end

HelloWorld.m

#import “HelloWorld.h”

@implementation HelloWorld
-(void)helloWorld {
NSLog(@“helloWorld”);
}
@end

4、更改引數

在TARGETS下選中工程,在Build Settings下更改幾個引數。
在這裡插入圖片描述
因為如果整合的專案支援 bitCode 就設定成yes 不支援就設定成NO
有的專案不支援


5、設定Headers

將你要公開的標頭檔案拖至Public下,要隱藏的放在Private或者Project下,當然,隱藏的標頭檔案就無法再被引用。
在這裡插入圖片描述

三 打包Framework
方法有很多 我們這裡只說一種
--------真機打包
1.選中Generic iOS Device,編譯程式 (只支援手機格式)
在這裡插入圖片描述

2.編譯成功後,選中圖中所標示的framework,然後右鍵show in finder。
在這裡插入圖片描述
在這裡插入圖片描述

3.將framework拷貝出來儲存,這就是我們最終制作的framework。
------------模擬器打包
1.選中模擬器,編譯程式 (只支援模擬器格式)
在這裡插入圖片描述
2.編譯成功後,選中圖中所標示的framework,然後右鍵show in finder。

在這裡插入圖片描述
在這裡插入圖片描述
四 合併framework
為了framework 支援真機 也支援模擬器 將兩個framework 合併
我們通過終端命令將兩個framework合為一個模擬器和真機都可使用的framework。
1 輸入 lipo -info加真機上的這個檔案路徑 如圖 在這裡插入圖片描述

然後回車 在這裡插入圖片描述
看最後 arm64 說明是真機,如此方法測試模擬器檔案,需得到i386 x86_64才對。
2 接下來重點:合併 利用 lipo -create 真機路徑 模擬器路徑 -output 真機路徑
在這裡插入圖片描述
合併成功 因為咱們是合併到真機上面了 故將真機裡面的framework拖入到專案中 就能同時使用真機和模擬器了

五 使用
1 匯入另一個Xcode專案中,我們開啟這個framework看看,發現只有Headers,裡面只有.h。
在這裡插入圖片描述
2 引入標頭檔案:
在這裡插入圖片描述
3 我們例項化一個例項物件,然後就可以讓這個例項物件調取相應的方法了
在這裡插入圖片描述
到此,完成Framework的製作和使用。