iOS打包靜態(tài)庫的流程在網(wǎng)上一搜一大把,但是很少看到同時把資源文件帶上的(畢竟打包的靜態(tài)庫一般都專做業(yè)務(wù)邏輯,很少摻雜視圖)。正好這次遇到了這個問題,就來說說目前打包過程中遇到的坑吧
資源文件不參與編譯的問題
雖說這是廢話。。。但是還是提提,資源文件不會編譯成二進制的文件(如果可以那就可以偷懶了,然而這樣包肯定又更大,真是難以取舍)。即使在項目中的Copy Bundle Resource中強行弄進去也不會有任何變化。。。然后我能想到的辦法就只有一個了,打包成bundle文件
打包成bundle之后圖片找不到的問題
其實。。。這個正常的想想,光是打包之后代碼也不改,怎么找的到原來的圖片。。。原本我的代碼里加載image用的是imageNamed方法,將資源文件打包之后就不得不在圖片名前加個bundle的路徑了
xxx.png -> xxx.bundle/xxx.png
為了方便就寫了個宏,都替換成這種模式
#define IMG_PATH(x) [NSString stringWithFormat:@"%@/%@",IMG_BUNDLE,x]
但是,開發(fā)的時候,資源文件都會分文件夾。。。直接這樣打包,好的,也是找不到,所以用這種方法,需要在打包成bundle的時候,把文件夾全部去掉,直接把文件全部拖到同一個文件夾下
這里怕有人不知道做個提示:bundle文件可以直接將文件夾名字改成xxx.bundle就自動打包了,不需要用xcode里面的bundle生成
打包跟開發(fā)項目分離,代碼更新后都要重新拖代碼
這個。。。嗯,因為項目在開發(fā)階段,好多問題都要修改,然后這邊改動了,打包的工程里的代碼也要拖,就覺得好麻煩- -于是介紹下我的處理方法,大神們勿噴。我的處理辦法是在開發(fā)的項目中添加個target,選擇framework文件,這樣就在工程里面有個framework的子工程了,然后手動將需要編譯成framework的.m文件和頭文件分別添加到Complie Sources和Headers中。由于我的項目里有用到pod引用第三方庫,所以在framework的配置中是稍微麻煩了一點,這個可以通過新建的framework工程中引入pod,將pod配置抄過來(坑點就是別忘記pod定義的user-defined)
然后由于兩個工程共用了文件,所以也添加了宏#define PROJECT_IS_FRAMEWORK 0(感覺應(yīng)該有其他方法判斷,但是沒去找),打framework的時候就修改一下。
這個方法唯一坑的就是,添加文件的時候,需要在framework的target中手動添加文件,其余的還好。
只用打release包就可以了吧
這個我也不太確定,不過反正debug包也能跑的樣子,那么干脆只打release就好了