- 步驟說(shuō)明
步驟如下:
- 制作framework
- 生成framework動(dòng)態(tài)鏈接庫(kù)
- 遠(yuǎn)程下載到動(dòng)態(tài)鏈接庫(kù)到沙盒
- 如何引用動(dòng)態(tài)鏈接庫(kù)
- 具體操作
1.制作動(dòng)態(tài)鏈接庫(kù)
2.添加我們要實(shí)現(xiàn)的功能類,添加開(kāi)放的頭文件
3.做成通用動(dòng)態(tài)庫(kù),創(chuàng)建Aggregate Target
4.添加Run Script牵祟,在Run Script添加一段腳步孝偎,目的是生成模擬器和真機(jī)合并的framework
5.選擇我們新建的Aggregate打包生成framework,打包成功后會(huì)自動(dòng)彈出打包文件夾(腳步作用)
- 設(shè)置framework支持哪些設(shè)備
設(shè)置Architecture:
armv6:iPhone 2G/3G岔帽,iPod 1G/2G
armv7:iPhone 3GS/4/4s昵仅,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5 iPhone5c
arm64:iPhone5s 后面的Apple所有產(chǎn)品
最新列表:https://en.wikipedia.org/wiki/List_of_iOS_devices
判斷l(xiāng)ib支持哪些庫(kù): lipo -info ./MyFramework.framework/MyFramework
特別說(shuō)明:Architectures和Valid Architectures的區(qū)別與作用
1.Architectures:該編譯選項(xiàng)指定了工程將被編譯成支持哪些指令集梢卸,支持指令集是通過(guò)編譯生成對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)包實(shí)現(xiàn)的走诞,如果支持的指令集數(shù)目有多個(gè),就會(huì)編譯出包含多個(gè)指令集代碼的數(shù)據(jù)包蛤高,造成最終編譯的包很大蚣旱。
2.Valid Architectures:該編譯項(xiàng)指定可能支持的指令集,該列表和Architectures列表的交集戴陡,將是Xcode最終生成二進(jìn)制包所支持的指令集塞绿。
3.比如,你的Valid Architectures設(shè)置的支持arm指令集版本有:armv7/armv7s/arm64恤批,對(duì)應(yīng)的Architectures設(shè)置的支持arm指令集版本有:armv7s异吻,這時(shí)Xcode只會(huì)生成一個(gè)armv7s指令集的二進(jìn)制包。
使用framework方法
void * dlopen(const char * __path, int __mode);
C語(yǔ)言方法
在dlopen的()函數(shù)以指定模式打開(kāi)指定的動(dòng)態(tài)連接庫(kù)文件喜庞,并返回一個(gè)句柄給調(diào)用進(jìn)程涧黄。通過(guò)這個(gè)句柄來(lái)使用庫(kù)中的函數(shù)和類。使用dlclose ()來(lái)卸載打開(kāi)的庫(kù)赋荆。
Path參數(shù):動(dòng)態(tài)鏈接庫(kù)所在沙盒地址
Mode:
1.RTLD_LAZY 暫緩決定笋妥,等有需要時(shí)再解出符號(hào)
2.RTLD_NOW 立即決定,返回前解除所有未決定的符號(hào)窄潭。下載framework到沙盒春宣,使用ZipArchive iOS解壓縮類
- 通過(guò)dlopen加載framework
- 調(diào)用方式(object-c/swift)
- 調(diào)用結(jié)果