【背景】最近iOS端項(xiàng)目新增widget,為了讓widget能夠使用第三方庫(AF宝踪、Masonry)侨糟,同時(shí)與主App的兼容。更新了Podfile文件中對(duì)第三方庫引用的寫法瘩燥,以及舊有pod配置緩存無法清除報(bào)錯(cuò)等原因秕重,導(dǎo)致需要將項(xiàng)目進(jìn)行遷移。
遷移:新建項(xiàng)目厉膀,將第三方庫類溶耘、業(yè)務(wù)代碼資源拷入,重新配置項(xiàng)目服鹅。
下面的項(xiàng)目遷移流程為參考建議凳兵,如果更好方案,可以討論更新企软。(項(xiàng)目中所有文件夾必須都是實(shí)體文件夾庐扫,不允許創(chuàng)建虛擬文件夾)
1、新建項(xiàng)目仗哨,修改最低兼容iOS版本形庭;(如果有widget之類的,也在這一步創(chuàng)建好藻治,并選擇好對(duì)應(yīng)的iOS版本號(hào))
2碘勉、在項(xiàng)目目錄中建立git倉庫,先使用本地git進(jìn)行項(xiàng)目管理桩卵;【重要验靡,以下每一步完成之后,需要git commit雏节,不再贅述】
3胜嗓、創(chuàng)建Podfile文件,使用pod命令先下載好需要用pod管理的三方庫類钩乍,編譯驗(yàn)證無誤辞州;
4、對(duì)于手動(dòng)管理的第三方庫類和系統(tǒng)庫類:
(1)將建立好目錄結(jié)構(gòu)的手動(dòng)管理的第三方庫類拷貝只項(xiàng)目對(duì)應(yīng)的目錄下寥粹,在Xcode中使用“Add Files to ”來導(dǎo)入变过,
(2)然后比照之前項(xiàng)目的Linked Frameworks and Libraries 列表,缺的一個(gè)個(gè)手動(dòng)add進(jìn)來涝涤,
(3)在build setting中媚狰,搜索 search ,結(jié)果如下阔拳,同樣崭孤,比照之前項(xiàng)目的配置,配置成一樣的,
![](http://wiki.yimilan.com/download/attachments/10618668/image2017-9-29_8-56-0.png?version=1&modificationDate=1506646560178&api=v2)
(4)如果之前有手動(dòng)管理的三方庫配置文檔清單最好辨宠,如果沒有遗锣,就開始biuld,應(yīng)該會(huì)報(bào)錯(cuò)嗤形,常見的報(bào)錯(cuò)還是需要在builde setttings 和 build phrase中來配置解決精偿;(這部分的代碼如果跟業(yè)務(wù)代碼有耦合了話,那就進(jìn)行下一步赋兵,并且还最,以后再也不要直接修改第三方庫類了)
5、將建立好實(shí)際目錄結(jié)構(gòu)的項(xiàng)目文件復(fù)制到新項(xiàng)目的對(duì)應(yīng)目錄下毡惜,在Xcode中使用“Add Files to ”來導(dǎo)入,pch文件(如果有)也拷過來斯撮,在build settings 中搜索“prefix header”经伙,配置如下圖中最后兩項(xiàng),比照老項(xiàng)目勿锅,接著編譯驗(yàn)證帕膜。如果還缺圖片等資源文件,請(qǐng)自行導(dǎo)入溢十。
![](http://wiki.yimilan.com/download/attachments/10618668/image2017-9-29_9-3-37.png?version=1&modificationDate=1506647017778&api=v2)
6垮刹、如果項(xiàng)目名稱不變,bundle id等標(biāo)識(shí)性的東西不變张弛,強(qiáng)烈建議荒典,直接向當(dāng)前項(xiàng)目的info.plist刪除,將原來項(xiàng)目的直接copy過來吞鸭,編譯驗(yàn)證寺董。
7、依次檢查capacities刻剥、general遮咖、build settings中重要的配置是否正確。
8造虏、調(diào)整項(xiàng)目文件結(jié)構(gòu)御吞。
9、正式將項(xiàng)目跑起來漓藕,驗(yàn)證業(yè)務(wù)主流程陶珠。
10、驗(yàn)證App主要技術(shù)功能點(diǎn)及有關(guān)的授權(quán):
(1)消息推送
(2)相冊(cè)和相機(jī)訪問
(3)音頻和視頻播放 撵术,注意背率,含音效
(4)錄音錄視頻
(5)三方登陸、分享、支付寝姿,app之間來回跳轉(zhuǎn)
(6)定位功能
(7)項(xiàng)目內(nèi)web頁面(特別是含有加載第三方web頁面的地方)
(8)與web頁面的交互
(9)widget等的兼容性交排、交互、跳轉(zhuǎn)
(10)其他