iOS 比較詳細的自定義framework編譯方法
2016年12月09日10:55:04
編譯framework
1赢织、iOS 開發(fā)里面签杈,你不想把源代碼給其他人,你就需要編譯Framework
1
1 、打開Xcode創(chuàng)建一個framework工程橙凳。
2罪针、新建一個TestFrame的工程
3彭羹、新建一個hello的類,并寫兩個方法
4泪酱、修改一些配置信息派殷,生成支持所有架構的版本。
修改build setting 里面的build active architecture only 如圖片所示的把Yes修改為NO?
?
在build phase 里面搜索 “mach”墓阀,設置type為 “static library”?
5毡惜、把需要公開的.h文件公開
在build phase 里面的headers 里面的project 右鍵 選擇move to public group?
6、使用command +b 編譯 framework
編譯真機 選擇 generic iOS device command +b 編譯?
編譯模擬器 選擇任意一個模擬器 command +b 編譯?
編譯成功是這樣的?
7斯撮、在文件夾查看編譯好的framework
8经伙、在文件夾可以看到如圖下面
9、把兩個文件夾拷貝到任意一個文件夾下面我這邊是桌面的一個”ytt”文件夾
10勿锅、下面就需要把模擬器和真機的合并成一個通用版(這里需要在終端操作)
這些是我的終端操作帕膜,下面解釋一下
taijitongdeiMac:~ taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos
taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework
Headers? ? Info.plist? Modules? ? TestFrame
taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame
Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 arm64?
taijitongdeiMac:Debug-iphoneos taiyoshimichi$ cd ..
taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator
taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ ls TestFrame.framework
Headers? ? Info.plist? Modules? ? TestFrame? _CodeSignature
taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame
Architectures in the fat file: ./TestFrame.framework/TestFrame are: i386 x86_64?
taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ cd ..
taijitongdeiMac:ytt taiyoshimichi$ lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame
taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos
taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework
Headers? ? Info.plist? Modules? ? TestFrame
taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame
Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 i386 x86_64 arm64?
taijitongdeiMac:Debug-iphoneos taiyoshimichi$?
第一步枣氧、使用 cd 命令到 真機文件夾
cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos
第二步、使用ls命令顯示TestFrame.framework的所有文件
ls TestFrame.framework
第三步垮刹、使用lipo -info查看真機支持的編碼达吞,可以看到是armv7,arm64?
lipo -info ./TestFrame.framework/TestFrame
第四步荒典、使用cd .. 回到根路徑
cd ..?
第五步酪劫、重復一二三,命令种蝶,只不過第一步的真機路徑改為模擬器路徑 最后可以看到編碼是? i386 x86_64
第六步契耿、合并真機和模擬器的framework使用lipo -create路徑a? 路徑b? -output路徑a?
cd ..
?lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame
?第七步、cd ..一下重復第一二三步查看得到的編碼就是? armv7 i386 x86_64 arm64螃征,說明你編譯成功了
可能出現問題1搪桂、直接合并兩個版本的TestFrame.framework,會便以失敗盯滚,因為.framework是不可以合并的,s實際上是合并TestFrame.framework里面的TestFrame文件
可能出現問題2踢械、模擬器版本顯示沒有i386,原因:是因為你在修改build setting里面的build active architecture only沒有把Yes修改為NO,
可能出現的問題3、在使用的時候運行會報錯dyld: Library not loaded: ***** Reason: image not found崩潰
解決方法魄藕,把framework添加一下如下圖所示