神劍若水哥:iOS項(xiàng)目組件化

1.重構(gòu)項(xiàng)目的原因

1.1公司的項(xiàng)目比較多,之前最多開發(fā)的時(shí)候有14個(gè),因?yàn)楣镜闹伴_發(fā)的項(xiàng)目的架構(gòu)不和要求,因?yàn)檫@些項(xiàng)目大體很相似,開發(fā)一個(gè)相同的功能,要遷移很多遍,開發(fā)量很大。項(xiàng)目,里有不少地方不適合做遷移,為了減少開發(fā)量,我個(gè)人決定做項(xiàng)目重構(gòu),可以提高自己的個(gè)人能力,減少工作量

image

1.2采用方式:父工程嵌套子工程的方式。因?yàn)轫?xiàng)目本身相似度還是比較高,每個(gè)需求又存在細(xì)微的差別,但是需求不是很獨(dú)立,功能中圖片和風(fēng)格都依賴App。彼此之間依賴性比較強(qiáng)。個(gè)人感覺沒有必要使用pod做模塊化,使用靜態(tài)庫或者動(dòng)態(tài)庫就可以

2.項(xiàng)目改名:我們copy 一份功能最齊全的項(xiàng)目,把改一下名字

首先copy一份功能比較齊全的項(xiàng)目,進(jìn)行改名:

image

改名字是一件麻煩的事情

比如我們現(xiàn)在想把 zhongxiangbao 改為 FZAllAppsProject

注意:重命名項(xiàng)目時(shí),記得先備份好一份

注意:重命名項(xiàng)目時(shí),記得先備份好一份

注意:重命名項(xiàng)目時(shí),記得先備份好一份

未修改之前的效果

image

2.1、打開項(xiàng)目,對(duì)項(xiàng)目名進(jìn)行 Rename,

操作:點(diǎn)擊項(xiàng)目名,直接回車即可

image

輸入FZAllAppsProject,然后回車,出現(xiàn)如下圖:點(diǎn)擊Rename

image

2.2.修改文件夾名字

原來的文件夾,都是zhongxiangbao,如圖:

image

把zhongxiangbao 替換成 FZAllAppsProject,修改完成,如圖:

image

2.3.修改工程文件

2.3.1 選中 FZAllAppsProject.xcodeproj 右鍵打開 --> 顯示包內(nèi)容 --> 雙擊打開 project.pbxproj 。

注意:打開的是 FZAllAppsProject.xcodeproj 文件,而不是 FZAllAppsProject.xcworkspace文件。

image
image

2.3.2 全部替換project.pbxproj 中zhongxiangbao為FZAllAppsProject

==操作步驟==

command +F 查找 zhongxiangbao ,然后點(diǎn)擊replace 全部替換成為FZAllAppsProject,最后Command + s 保存一下

++注意一定要保存++
++注意一定要保存++
++注意一定要保存++

截圖如下:

image
image

2.4 pod 的修改,打開Podfile 文件把里邊的zhongxiangbao 替換為FZAllAppsProject ,

image
image

執(zhí)行pod install

image

完成以后項(xiàng)目可以跑起來了,但是target 的名字不對(duì)

2.5.修改target 的名字,

image
image
image

2.6.全局替換zhongxiangbao為FZAllAppsProject


image

改名完成

3.新建另一個(gè)項(xiàng)目的target

3.1.復(fù)制一target

image
image

3.2.修改target名稱

image
image
image

3.3修改plist文件,改為xiaoer-Enterprise

image

關(guān)閉項(xiàng)目,重新打開會(huì)發(fā)現(xiàn) 如下圖;點(diǎn)擊choose file

image
image

4.新建子項(xiàng)目工程

4.1.新建子工程文件夾FZAppSubProject

image

4.2.新建子工程(其實(shí)是一個(gè).framwork的靜態(tài)庫),如下1,2:

image

選擇FrameWork,下一步

image

4.3項(xiàng)目名字,然后下一步

image

4.4選擇剛才的FZAppSubProject路徑,然后下一步

image

4.5 將靜態(tài)包的工程,導(dǎo)入FZAllAppsProject 工程中

右擊FZAppSubProject,選擇add files


image

選擇剛剛創(chuàng)建的子工程的工程文件,xiaoer_pack.xcodeprog ,

注意:勾選對(duì)應(yīng)的target

image

創(chuàng)建完成

image

5.子工程資源配置

5.1 處理plist文件

5.1.1建立如下的目錄結(jié)構(gòu)

image

5.1.2.遷移plist 文件以后,重新關(guān)閉,打開項(xiàng)目,項(xiàng)目提示plist文件丟失:

image

5.1.3重新選擇一下plist 文件

image

5.2. 配置工程對(duì)應(yīng)assest 盒子

5.1.新建盒子

image
image
image

5.2.在asset 盒子中添加圖片icon和launch image

image
image

配置上自己的圖片即可,lunch image不要配置路徑,但是icon 需要配置路徑

5.3工程配置icon

5.3.1取消小二項(xiàng)目默認(rèn)的asset

image

5.3.2 配置新的asset 盒子

image

5.4 遷移圖片到新項(xiàng)目盒子里

image

image

5.5 跟換證書和bundleId

image
image

6.工程文件的頭文件配置

工程文件中很多頭文件配置需要共同引用

image

7.項(xiàng)目整理和配置

7.1.配置項(xiàng)目信息

image

info 中信息要copy 過來

image

7.2.主工程找不到子工程頭文件的問題

image

7. 3.主工程 找不到.m 文件Undefined symbol: OBJC_CLASS$_FZjingtaiTestView

image

解決辦法:

image

7.4.子工程找不到主工程定義的文件

解決辦法:

7.4.1.增加pch

image
image

7.4.2.增加子工程的header 搜索路徑$(SRCROOT)/login_xiaoer-prefix.pch

image

7.4.3.增加子工程的framework 搜索路徑

image

7. 5 主工程增加對(duì)子工程的庫的依賴

image

7.6 子工程中加入Xib 資源;Xib 資源不能直接放入包中,否者無法訪問。要放入bundle 中,然后copy 到主工程。

7.6.1 新建一個(gè)mac os 的bundle

image
image

7.6.2 設(shè)置bundle 為iOS

image

7.6.3 設(shè)置bundle 為bundle

image

7.6.4 設(shè)置hidp 為NO,為YES 時(shí),會(huì)把圖片轉(zhuǎn)換為tiff 格式

image

7.6.5 設(shè)置bitCode 為NO

image

7.6.5 設(shè)置Build Active Architecture Only 為NO

image

7.6.6 設(shè)置子工程對(duì)bundle 的依賴,編譯子工程的時(shí)候,bundle 會(huì)自動(dòng)編譯

image

7. 6.7 把xib等資源導(dǎo)入bundle 中

image

7. 6.8 主工程中copy bundle資源

image

7.7 把資源copy 到FrameWork中,把包設(shè)置為Embed& sign,不然frameWork 是不能放資源的

image

8. 修改Xib 加載圖片路徑的問題

詳細(xì)請(qǐng)見另一篇簡(jiǎn)書文章
簡(jiǎn)書鏈接:http://www.itdecent.cn/p/843f92746856

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容