IOS真機(jī)和模擬器Framework、打包Framework(一)

由于之前的打包不成功,后來就想進(jìn)一步弄下framework所對應(yīng)的環(huán)境
看了下Android也是一樣的,初步先這樣,以后慢慢深究

debug
app-arm64-v8a-debug.apk
app-armeabi-v7a-debug.apk
app-x86_64-debug.apk
app-x86-debug.apk
release
app-arm64-v8a-release.apk
app-armeabi-v7a-release.apk
app-x86_64-release.apk
app-x86-release.apk
分別對應(yīng)為
arm64-v8a: 第8代、64位ARM處理器
armeabiv-v7a: 第7代及以上的 ARM 處理器
x86_64: 64位的平板
x86: 平板、模擬器用得比較多

前言
如果想將自己開發(fā)的控件、代碼與別人分享,首先我們可以直接提供源代碼文件。但是,有時(shí)候我們并不想別人看到我們代碼的實(shí)現(xiàn),而這些實(shí)現(xiàn)我們可能并不想開源出來。別人也不想將我們寫的代碼都拖到項(xiàng)目中,他們只是需要一種簡單的方法來編譯你的代碼,使得你的代碼易使用,并且在多個(gè)工程中易復(fù)用。所以我們需要的是一種方法來打包你的靜態(tài)庫,將所有的頭文件放到一個(gè)單元中,這樣你就可以立刻將其加入到你的項(xiàng)目中并使用。
OS X完美地支持這一點(diǎn),因?yàn)閄code就提供了一個(gè)項(xiàng)目模板,包含著默認(rèn)構(gòu)建目標(biāo)(target)和可以容納類似于圖片、聲音、字體等資源的文件。你可以為iOS創(chuàng)建Framework,不過這是一個(gè)比較復(fù)雜的手工活,如果你跟著教程走,你將學(xué)到怎么樣跨過路障,順利地完成Framework的創(chuàng)建。

下面我們就來進(jìn)行打包Framework
一 目標(biāo)
本文將基于Xcode9創(chuàng)建一個(gè)簡單的工程,來教大家如何制作一個(gè)自己的framework,目的就是簡單易學(xué)的制作framework。這種方法可以使得你的代碼易分享,在多個(gè)工程中復(fù)用,并且可以隱藏實(shí)現(xiàn)細(xì)節(jié),控制公開的頭文件。
二 步驟
1、打開Xcode,新建工程。
不要選擇“Application”,選擇“Framework & Library”。選擇第一個(gè),然后Next。


image.png

image.png

2、創(chuàng)建功能類。
首先創(chuàng)建一個(gè)繼承自NSObject的HelloWorld類


image.png

3、實(shí)現(xiàn)功能。
在新創(chuàng)建的類里面聲明方法并實(shí)現(xiàn)。這里我寫一個(gè)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、更改參數(shù)

在TARGETS下選中工程,在Build Settings下更改幾個(gè)參數(shù)。


image.png

因?yàn)槿绻傻捻?xiàng)目支持 bitCode 就設(shè)置成yes 不支持就設(shè)置成NO


image.png

5、設(shè)置Headers
將你要公開的頭文件拖至Public下,要隱藏的放在Private或者Project下,當(dāng)然,隱藏的頭文件就無法再被引用。


image.png

三 打包Framework
方法有很多 我們這里只說一種
--------真機(jī)打包
1.選中Generic iOS Device,編譯程序 (只支持手機(jī)格式)


image.png

2.編譯成功后,選中圖中所標(biāo)示的framework,然后右鍵show in finder。
image.png

image.png

3.將framework拷貝出來保存,這就是我們最終制作的framework。
------------模擬器打包
1.選中模擬器,編譯程序 (只支持模擬器格式)


image.png

2.編譯成功后,選中圖中所標(biāo)示的framework,然后右鍵show in finder。
image.png

image.png

四 合并framework
為了framework 支持真機(jī) 也支持模擬器 將兩個(gè)framework 合并
我們通過終端命令將兩個(gè)framework合為一個(gè)模擬器和真機(jī)都可使用的framework。
1 輸入 lipo -info加真機(jī)上的這個(gè)文件路徑 如圖
image.png

然后回車
image.png

需要將真機(jī)和模擬器framework包中這個(gè)文件合并
lipo -create {文件1路徑}{文件2路徑} -output ${生成的文件路徑}
可以直接將最終生成的文件路徑設(shè)置為真機(jī)Framework包下該文件的路徑,生成的文件直接進(jìn)行覆蓋,生成完畢后,直接拷貝走使用
看最后 arm64 說明是真機(jī),如此方法測試模擬器文件,需得到i386 x86_64才對。
2 接下來重點(diǎn):合并 利用 lipo -create 真機(jī)路徑 模擬器路徑 -output 真機(jī)路徑

image.png

合并成功 因?yàn)樵蹅兪呛喜⒌秸鏅C(jī)上面了 故將真機(jī)里面的framework拖入到項(xiàng)目中 就能同時(shí)使用真機(jī)和模擬器了
五 使用
1 導(dǎo)入另一個(gè)Xcode項(xiàng)目中,我們打開這個(gè)framework看看,發(fā)現(xiàn)只有Headers,里面只有.h。
image.png

2 引入頭文件:
image.png

3 我們實(shí)例化一個(gè)實(shí)例對象,然后就可以讓這個(gè)實(shí)例對象調(diào)取相應(yīng)的方法了


image.png

到此,完成Framework的制作和使用。

————————————————
參考文章「哈皮吖」:https://blog.csdn.net/u013983033/article/details/83026218

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這幾天公司有一個(gè)新的需求,就是要將我們開發(fā)的某些東西都抽取出來,打個(gè)比方我們開發(fā)了A項(xiàng)目,可以以后B項(xiàng)目要包含A項(xiàng)...
    黃魚兒啦啦啦閱讀 6,429評論 2 16
  • 前言 如果你想將你開發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所...
    和玨貓閱讀 49,151評論 53 145
  • 前言 如果你想將你開發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所有的實(shí)...
    大沖哥閱讀 1,438評論 0 4
  • 前言 如果你想將你開發(fā)的控件與別人分享,一種方法是直接提供源代碼文件。然而,這種方法并不是很優(yōu)雅。它會(huì)暴露所有的實(shí)...
    球哥閱讀 418評論 0 2
  • 原文iOS中,Framework和.a的打包及使用 最近在做一個(gè)小項(xiàng)目,需要給客戶一個(gè)demo測試,有一部分核心代...
    00after閱讀 361評論 0 0

友情鏈接更多精彩內(nèi)容