iOS在原來項目上新建Target

我們在iOS開發中可能會遇到同時開發多個類似項目的情況。這些項目大同小異,有諸多代碼可以共用,如果每個項目都分別開發,這在后期的迭代中會十分繁瑣。為了解決這個問題,使用多Target開發是一種比較好的選擇,本文就這一技術實現進行簡要總結。現在很多iOS開發工程師都是通過這樣來建立馬甲包的,也正是因為這樣導致蘋果審核變得嚴格,發現代碼重復率很高的App會拒絕上架。

我們使用Xcode來開發項目,其中的Project是一個整體項目相當于一個倉庫,包括了所有的代碼和資源文件。而Target相當于一個具體的產品,包含了對于代碼,資源文件的具體使用規則和配置。一個Project可以包含多個Target,也就是說通過不同Target我們可以生成不同的APP。

1、新建target

第一種:依次選擇File->New->Target,然后選擇一個模板(通常是Single View App)來創建。這樣創建的target帶有Appdelegate和main等文件。

給上名字,就創建好了。

第二種:在Targets中點擊已有的Target,右鍵選擇Duplicate可以復制生成一個copy的新Target,并且在文件目錄中生成對應的copy-Info.plist文件。這樣生成的target與被拷貝的target相似度很大,減少了過多的修改。通常為了減少后期的修改,我們也會首先在原有的Target中修改一些配置之后再Duplicate。Target是可以改名的,選中按回車就行。

2、你可以修改它的info.plist文件等讓它與原來的進行區別。如果刪除了,則可以通過Build Settings中搜索info.plist并指定它的位置。你可以打開第一個target的info.plist文件的源碼(右鍵-->open as),將它復制進你的target的info.plist文件中。

3、還有橋接文件、xassets等,并設置以下屬性

4、記得把你的podfile更新(如下),并pod update一次。

target 'target名字' do

pod 'CocoaAsyncSocket'

pod 'BZipCompression'

pod 'Masonry'

pod 'MBProgressHUD'

pod 'SDWebImage'

pod 'AFNetworking', '~>3.0'

pod 'RETableViewManager', '~> 1.6'

pod 'UMengAnalytics-NO-IDFA'

如果項目中發現這些類庫還是顯示報錯,做以下操作:

(1)選擇target(就是左邊你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths(如圖所示:)

(2)雙擊后面的空白區域:(如圖所示:)

(3)出現下面的圖,并且點擊“+”號添加一項:并且輸入:“$(PODS_ROOT)”(沒有引號),選擇:recursive(會在相應的目錄遞歸搜索文件):

這樣設置完成之后,再在工程中導入cocoaPods安裝的第三方類庫就有提示了


5、然后把所有文件單擊,找到右邊的Target Membership(如下圖),需要的就打勾(少打了就會出現找不到的情況),包括類庫、點m文件、xib、音頻文件等。

為了確保文件全部勾上,可以在下圖查看數量是不是和原Target一樣

6、使用多Target是為了共用一部分代碼,但是有些共用的文件在不同的Target下是有細微不同的,那么我們在具體實現的時候就需要作出區分。這里解決的方法是針對不同的Target定義宏。prefixheader要設置好宏文件,并設置下面的屬性(版本號)

有了這個屬性,你就可以去代碼中管控不同了

#if? JDM_VERSION == 1

這里寫上你想在target上寫的代碼...

#endif

7、如果有的需要設置bitcode,就去設置為NO;

8、運行,遇見這個報錯:1 duplicate symbol for architecture arm64,對提示的類庫重復的文件或者導入的類庫進行刪除即可。

9、記得改infoplist文件的地址,不然對應的地址會不正確

10、當然也要記得重新設置pch文件的地址,不然找不到哦。

重新設置PCH文件的地址

11、MRC的部分文件記得把它轉成ARC,不然編譯不過,照著原來的target去修改就好了

轉成ARC

12、記得添加其它target添加的動態庫

添加動態庫

13、國際化的文件名名要一致。

國際化推薦:http://www.lxweimin.com/p/63a1c1a40b93

最后,基本大功告成了。文章寫的不好的地方,歡迎大家指正~ 有問題可以貼出來,大家一起交流,祝薪水越來越高~

最近看到一篇不錯的文章:http://blog.csdn.net/ysysbaobei/article/details/10951991

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容