1. 程式人生 > >你知道如何為iOS工程改名嗎?

你知道如何為iOS工程改名嗎?

我們在iOS開發中,難免會遇到專案做到一半要改名字的情況。如果專案名差的太大,工程名看起來總是不舒服的,有良心的開發者可能就會想著為工程改個貼切的名字,那麼你就為用到本文記錄的內容。 
如果我們開發的兩個專案相差不大,只有部分主題、佈局有更改,那麼我們就可以拷貝之前已經完成的專案,改改名字,再對部分介面和程式碼稍稍修改就可以啦。

如何修改工程名呢?

下面我就拿一箇中等大小的專案來實際操作一下,並記錄整個要修改的地方。 
該專案的結構如下:

專案結構

專案中還用到了幾個第三方框架:

第三方框架

接下來,就要開始修改專案名稱了。假設我要把doutu改為shopping

提醒: 
* 在改工程名之前,要注意三件事:一定要備份,一定要備份,一定要備份。 
* 在開始第一步之前,請先執行第八步。

1.修改project名稱

選中project 單擊project名字 或者 選中project+回車。

 
修改project的名稱之後,回車會有提示: 
 
這裡點選Rename,將project中部分doutu改為shopping。 
修改之後,哪些地方有明顯變化呢?

Rename後

2.修改資料夾名稱

選中資料夾 單擊資料夾名字 或者 選中資料夾 回車。 
修改資料夾

修改之後,回車是這樣的:

修改資料夾名字後

雖然在Xcode 裡資料夾的名字修改了,但是實際上資料夾裡的名字還是沒有修改,我們需要去真實資料夾裡再修改一次。

修改真實目錄名稱

3.修改工程中資料夾的路徑

在上一步修改玩真實資料夾的名字後,工程中所有的類都變成了紅色(檔案找不到)。如下圖所示: 

主要是因為工程中的資料夾指引的路徑不對。

按照如上步驟所示,找到我們剛才修改的真實shopping資料夾,點選Chose 即可。 
這時候,因為資料夾關聯的真實資料夾路徑正確了,所有紅色的檔案都正常了。 
這是修改後的樣子:

修改後

4.全域性搜尋

全域性搜尋doutu,搜尋結果如下:

7266902F-751B-42BE-BF13-FF84EB5E96BB.png

接下來是將doutu替換為shopping

DB9337FB-35A2-4509-84EB-BDF17C9BEA8C.png

點選Replace All之後,大部分doutu都會被替換為shopping,但是還是有一些頑固的殘留。

替換後

可以看出,這個是project 檔案中,我的第三方框架的framework Search Paths 和Library Search Paths 的路徑錯誤。即:

這裡只需要將doutu 修改為 shopping即可。 
怎麼修改呢? 
有兩種方式,第一種雙擊framework Search Paths 和Library Search Paths 後面的值,然後單獨修改每個值。

雙擊修改

第二種方案,先將framework Search Paths 和Library Search Paths中的值都刪掉,然後把第三方刪除,再重新新增。

Paste_Image.png

這裡點選Remove References刪除,然後再把Vendor資料夾新增進工程即可。

5.修改pch檔案路徑

如果你的工程裡添加了pch檔案,因為修改了資料夾,project名字,所以pch資料夾路徑也要修改。修改前編譯執行,會報如下錯誤:

pch檔案找不到

在Build Settings 中搜索Prefix,修改Prefix Header 的值。

上面把doutu/shopping-Prefix.pch修改為shopping/shopping-Prefix.pch即可。

6.修改info.plist檔案路徑

此時再次編譯執行,依然會有一個錯誤,錯誤如下:

然後依然去 Build Setting 中搜索info.plist。

上面將doutu/Info.plist修改為shopping/Info.plist即可。

到這裡,工程應該已經可以正常運行了。

Buid Succeeded

但是,如果你想追求完美,依然還有兩個地方需要修改。

7.修改scheme 值

要修改的其實是這個地方的顯示名稱:

怎麼修改呢? 
點選scheme值,然後選擇 Manage Schemes...

接下來會進入到一個彈出視窗,選中一行,點選scheme值或者 回車

這裡把doutu 修改為 shopping就會看到 scheme 變成了shopping,如下圖所示:

Paste_Image.png

8.修改大資料夾的名稱

其實這一步,應該在拷貝完工程後,直接修改的。所以這一步更應該放在第一步做。

修改大資料夾的名稱

到這裡,就真的大功告成啦。Have Fun!