xcode 8 Framework 打包(一)將整個工程打Framework包

無論是是整個xcode工程還是將部分代碼打包Framework 方法是一致的募逞,對于AppDelegate來講捞附,不要包含進(jìn)去即可

1.創(chuàng)建Framework的target

選擇Targets中的+ --> iOS -->Cocoa Touch Framework --> Next


圖例1.png

對于使用了Cocoapod導(dǎo)入第三方的xcode工程來講 需要在Podfile中 做如下修改 之后 pod install

需要同時(shí)對住工程target 和Framework的target 配置pod環(huán)境

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
use_frameworks!
target 'xxx' do
    react_native_path = "./ReactNative/node_modules/react-native"
    pod "React", :path => react_native_path,:subspecs => [
    'Core',
    'RCTText',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTSettings',
    'RCTVibration',
    'RCTGeolocation',
    'RCTActionSheet',
    'RCTNetwork',
    'RCTWebSocket'
    ]
    pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
    pod 'Masonry', '1.0.2'
    pod 'FMDB', '2.6.2'
    pod 'MJExtension', '3.0.13'
    pod 'MJRefresh', '3.1.12'
    pod 'AFNetworking', '3.1.0'
    pod 'SVProgressHUD', '2.1.2'
    pod 'TZImagePickerController', '1.7.8'
    pod 'BeeCloud', '3.6.1'
    pod 'HyphenateLite','3.3.2'
    pod 'EaseUILite', :git =>'https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git’,:tag => '3.3.2'
    pod 'BaiduMapKit' #百度地圖SDK
    pod 'EDStarRating', '1.1'
    pod 'ReactiveObjC', '3.0.0' #測試使用

end



target ‘xxx_Framework’ do
    react_native_path = "./ReactNative/node_modules/react-native"
    pod "React", :path => react_native_path,:subspecs => [
    'Core',
    'RCTText',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTSettings',
    'RCTVibration',
    'RCTGeolocation',
    'RCTActionSheet',
    'RCTNetwork',
    'RCTWebSocket'
    ]
    pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
    pod 'Masonry', '1.0.2'
    pod 'FMDB', '2.6.2'
    pod 'MJExtension', '3.0.13'
    pod 'MJRefresh', '3.1.12'
    pod 'AFNetworking', '3.1.0'
    pod 'SVProgressHUD', '2.1.2'
    pod 'TZImagePickerController', '1.7.8'
    pod 'BeeCloud', '3.6.1'
    pod 'HyphenateLite','3.3.2'
    pod 'BaiduMapKit' #百度地圖SDK
    pod 'EaseUILite', :git =>'https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git’,:tag => '3.3.2'
    pod 'EDStarRating', '1.1'
    pod 'ReactiveObjC', '3.0.0' #測試使用
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ENABLE_BITCODE'] = 'NO'
        end
    end
end

2.build Setting 設(shè)置

選擇工程文件>target第一項(xiàng)>Build Setting>搜索linking,然后幾個需要設(shè)置的選項(xiàng)都顯現(xiàn)出來玫恳,首先是Dead Code Stripping設(shè)置為NO逊移,網(wǎng)上對此項(xiàng)的解釋如下,大致意思是如果開啟此項(xiàng)就會對代碼中的”dead”薄嫡、”unreachable”的代碼過濾,不過這個開關(guān)是否關(guān)閉谈飒,似乎沒有多大影響岂座,不過為了完整還原framework中的代碼态蒂,將此項(xiàng)關(guān)閉也未曾不可杭措。
The resulting executable will not include any “dead” or unreachable code
然后將Link With Standard Libraries關(guān)閉,我想可能是為了避免重復(fù)鏈接
最后將Mach-O Type設(shè)為Static Library钾恢,framework可以是動態(tài)庫也可以是靜態(tài)庫手素,對于系統(tǒng)的framework是動態(tài)庫,而用戶制作的framework只能是靜態(tài)庫瘩蚪。

圖例3.png

開始將下圖中的build Active Architecture only選項(xiàng)設(shè)為YES泉懦,導(dǎo)致其編譯時(shí)只生成當(dāng)前機(jī)器的框架,將其設(shè)置為NO后疹瘦,發(fā)現(xiàn)用模擬器編譯后生成的framework同時(shí)包含x86_64和i386架構(gòu)崩哩。不過這個無所謂,我們之后會使用編譯腳本言沐,腳本會將所有的架構(gòu)全包含

圖例4.png

Header中將需要暴露的頭文件暴露出去邓嘹,Complie Sources 中需要編譯的xxxx.m源文件添加進(jìn)去

圖例5.png

3.向外暴露引用文件

build Phases 中header只是聲明那些文件可以在外部可以被引用
在framework目錄下的.h 文件中講需要暴露出去的頭文件聲明一下

圖例6.png

否則在引用的時(shí)候會出現(xiàn)如下 Miss submodule 'xxxxx.xxxx.h'的警告


圖例7.png

4.編譯

編譯成功之后 xxx.framwork 即變?yōu)楹谏?show in finder 就會看到

圖例8.png

show in finder 如下
Debug-iphoneos 為Debug模式下真機(jī)使用的
Debug-iphonesimulator 為Debug模式下模擬器使用的
Release -iphoneos 為Release模式下真機(jī)使用的
Release-iphonesimulator 為Release模式下模擬器使用的

圖例9.png

5.framework框架

1.檢查framework支持的框架

使用 lipo -info 即可查看 framework所支持的架構(gòu)

lipo -info xxx_Framework 
Architectures in the fat file: xxx_Framework are: armv7 arm64

2.合并framework

使用lipo -create xxx xxx -output xxx 即可將支持單個架構(gòu)的framework融合成一個支持多種架構(gòu)的framework

MacBook-Pro:Products $ lipo -create /Users/sqq/Library/Developer/Xcode/DerivedData/xxxx-ahamypgonskszeeayqaqqzajlxvq/Build/Products/Release-iphoneos/PTYL_Client_Framework.framework/PTYL_Client_Framework /Users/sqq/Library/Developer/Xcode/DerivedData/xxxx-ahamypgonskszeeayqaqqzajlxvq/Build/Products/Release-iphonesimulator/PTYL_Client_Framework.framework/xxxx -output xxx
MacBook-Pro:Products $ ls
Debug-iphoneos      xxxx    Release-iphonesimulator
Debug-iphonesimulator   Release-iphoneos    Release-universal
MacBook-Pro:Products $ lipo -info xxx
Architectures in the fat file: xxxx are: armv7 i386 x86_64 arm64 

最后將output 生成的 文件 復(fù)制到Debug-iphoneos 或者Debug-iphonesimulator 任意一個下面的framework目錄下 即可
這個很重要

完畢

這里為手動合并框架,下一篇將介紹如何自動合并
下一篇
Xcode8 下 Framework 打包(二)自動打包腳本創(chuàng)建過程

參考
上傳APP到應(yīng)用商店時(shí)出現(xiàn) ERROR ITMS-90668錯誤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末险胰,一起剝皮案震驚了整個濱河市汹押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌起便,老刑警劉巖棚贾,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榆综,居然都是意外死亡妙痹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門鼻疮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怯伊,“玉大人,你說我怎么就攤上這事陋守≌鸸螅” “怎么了利赋?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長猩系。 經(jīng)常有香客問我媚送,道長,這世上最難降的妖魔是什么寇甸? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任塘偎,我火速辦了婚禮,結(jié)果婚禮上拿霉,老公的妹妹穿的比我還像新娘吟秩。我一直安慰自己,他們只是感情好绽淘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布涵防。 她就那樣靜靜地躺著,像睡著了一般沪铭。 火紅的嫁衣襯著肌膚如雪壮池。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天杀怠,我揣著相機(jī)與錄音椰憋,去河邊找鬼。 笑死赔退,一個胖子當(dāng)著我的面吹牛橙依,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播硕旗,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窗骑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卵渴?” 一聲冷哼從身側(cè)響起慧域,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浪读,沒想到半個月后昔榴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碘橘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年互订,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痘拆。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡仰禽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吐葵,我是刑警寧澤规揪,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站温峭,受9級特大地震影響猛铅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凤藏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一奸忽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揖庄,春花似錦栗菜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至检号,卻和暖如春腌歉,著一層夾襖步出監(jiān)牢的瞬間蛙酪,已是汗流浹背齐苛。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桂塞,地道東北人凹蜂。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像阁危,于是被迫代替她去往敵國和親玛痊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容