ps:以網(wǎng)上的一個(gè)仿微信小視頻的代碼塊為基礎(chǔ)做的,具體地址給忘記了,找了一圈也沒找到诈皿。
一溶其、首先是打包.a文件管宵,也就是純代碼的那一塊(代碼區(qū)-功能區(qū))? ?注意:xib得打包成bundle文件里面去前痘,不要導(dǎo)入到這邊來
1.創(chuàng)建一個(gè)Static Library
2.導(dǎo)入代碼模塊晌砾,或者創(chuàng)建編寫代碼模塊
3.設(shè)置它的一些配置屬性
4.bulid之前設(shè)置release
5.切換真機(jī)和模擬器都跑一遍坎拐,生成兩個(gè).a文件(看需求,筆者這邊只需要真機(jī)的就行养匈,就沒處理模擬器的了)
需要兼容模擬器和真機(jī)的需要再進(jìn)行一步合并操作:
模擬器路徑:
/Users/xxx/Library/Developer/Xcode/DerivedData/XFCamera-glhzhzqypfcnbqblivtyxfnzuqbb/Build/Products/Release-iphonesimulator/xxx.a
真機(jī)路徑:
/Users/xxx/Library/Developer/Xcode/DerivedData/XFCamera-glhzhzqypfcnbqblivtyxfnzuqbb/Build/Products/Release-iphoneos/xxx.a
終端操作合并:
lipo -create /Users/xxx/Library/Developer/Xcode/DerivedData/XFCamera-glhzhzqypfcnbqblivtyxfnzuqbb/Build/Products/Release-iphonesimulator/xxx.a /Users/xxx/Library/Developer/Xcode/DerivedData/XFCamera-glhzhzqypfcnbqblivtyxfnzuqbb/Build/Products/Release-iphoneos/xxx.a -output /Users/xxx/Desktop/xxx.a
最終生成的可兼容.a文件地址:
/Users/xxx/Desktop/xxx.a
二哼勇、打包.bundle文件
1.創(chuàng)建boundle工程
2.導(dǎo)入資源文件
3.設(shè)置配置屬性
刪除info文件
"Base SDK" 設(shè)置為 "iOS" (Xcode 10.1為例)
"Build Active Architecture Only" 設(shè)置為 "YES"
Installation Directiotory ? ?刪除掉后面的路徑
Code Signing Identity ? 選擇 Don't Code Sign ?
"iOS Deployment Target" 設(shè)置為 iOS 8.0 ?(為了兼容性,最好選擇最低版本)
"Skip Install" 設(shè)置為 "NO"
"Strip Debug Symbols During Copy" 中"Release"模式設(shè)置為 "YES"
"IOS Deployment Target" 設(shè)置為 "iOS 8.0"
"COMBINE_HIDPI_IMAGES" 設(shè)置為 "NO"
4.然后command+B編譯一下
5.找到生成的bundle呕乎,打包上架APP的時(shí)候應(yīng)使用真機(jī)模式下運(yùn)行生成的Bundle积担,即Debug-iPhoneos 文件夾內(nèi)的bundle。
寫在最后:有xib和資源文件的選擇先打包好bundle文件再打包.a文件比較容易記住猬仁,畢竟取資源文件的方法跟直接取有了很大的區(qū)別帝璧,當(dāng)然邏輯嚴(yán)謹(jǐn)直接寫的時(shí)候就已經(jīng)考慮到這種情況了就隨便玩。
取例:???
//xib
NSString * bundlePath = [[NSBundle mainBundle] pathForResource:@"XFResource" ofType:@"bundle"];
NSBundle* resourceBundle = [NSBundlebundleWithPath:bundlePath];
XFCameraController *cameraController = [[XFCameraController alloc] initWithNibName:@"XFCameraController" bundle:resourceBundle];
//圖片
[_cancelButton setBackgroundImage:[UIImage imageNamed:@"XFResource.bundle/icon_return_n"] forState:UIControlStateNormal];
測試demo:測試demo