成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

XCode工程中 Targets詳解

移動開發 iOS
本文介紹的是XCode工程中 Targets詳解,打開一個工程后, 左側的列表中有Targets一項,我們一起來看內容詳解。

XCode工程中 Targets講解是本文要介紹的內容,相信很多人都注意到XCode中, 有個Target的概念. 這在很多地方都有所體現, 比如打開一個工程后, 左側的列表中有Targets一項, 而在工程界面的頂部菜單中, project里面也有多個涉及到Target的項目, 那么這個Target到底是什么呢? 

Apple的人是這樣說的:“ Targets that define the products to build. A target organizes the files and instructions needed to build a product into a sequence of build actions that can be taken.”

簡單的理解的話, 可以認為一個target對應一個新的product(基于同一份代碼的情況下). 但都一份代碼了, 弄個新product做啥呢? 折騰這個有意思么?

其實這不是單純的瞎折騰, 雖然代碼是同一份, 但編譯設置(比如編譯條件), 以及包含的資源文件卻可以有很大的差別. 于是即使同一份代碼, 產出的product也可能大不相同.

我們來舉幾個典型的應用多Targets的情況吧, 比如完整版和lite版; 比如同一個游戲的20關, 30關, 50關版; 再或者比如同一個游戲換些資源和名字就當新游戲賣的(喂喂, 你在教些什么...)

Targets之間, 什么相同, 什么不同

既然是利用同一份代碼產出不同的product, 那么到底不同Target之間存在著什么樣的差異呢?

要解釋這個問題, 我們就要來看看一個Target指定了哪些內容.

從XCode左側的列表中, 我們可以看到一個Target包含了Copy Bundle Resources, Compile Sources, Link Binary With Libraries. 其中

Copy Bundle Resources 是指生成的product的.app內將包含哪些資源文件

Compile Sources 是指將有哪些源代碼被編譯

Link Binary With Libraries 是指編譯過程中會引用哪些庫文件

通過Copy Bundle Resources中內容的不同設置, 我們可以讓不同的product包含不同的資源, 包括程序的主圖標等, 而不是把XCode的工程中列出的資源一股腦的包含進去.

而這還不是一個target所指定的全部內容. 每個target可以使用一個獨立, 不同的Info.plist文件. 

我們都知道, 這個Info.plist文件內定義了一個iPhone項目的很多關鍵性內容, 比如程序名稱, 最終生成product的全局***id等等.
   
而且不同的target還可以定義完整的差異化的編譯設置, 從簡單的調整優化選項, 到增加條件編譯所使用的編譯條件, 以至于所使用的base SDK都可以差異化指定.

創建第二個Target

為什么是第二個? 因為***個就是創建好工程后的默認Target呀! (廢話這么多, 拖走...)

創建target有多種方法, 我們可以從現有的target上復制出一份, 然后略加改動, 也可以完全新建一個target出來. 但其實說穿了, 兩個方法大同小異

首先我們來看看利用復制的方法創建target

利用復制創建target

我們在XCode左側的列表中, 展開 Targets 項, 在現有的target上, 右鍵選擇 "Duplicate", 或者選中現有target后, 在頂部菜單的Edit內選擇"Duplicate"也可以.

此時我們就得到了一個新的target, 而在Resource里面也會得到一個 xxxx copy.plist. 這個新的target與原有的target是完全一致的, 余下的就是一些差異化的修改, 這個我們后面再說

創建全新的target

類似復制的方法, 我們可以在左側的列表中很多地方按下右鍵菜單, 都可以看到Add中會有"New Target..."一項, 而在工程頂部菜單的Project內, 也可以看到這個"New Target..."的身影.

點擊后, 首先會讓你選擇target的類型, 既然我一直所指的都是程序本身, 那么自然選擇Application了(至于其他的嘛, 有興趣的自己研究吧, 比如我們可以把程序中的部分提取成一個Static Library).

Next后, 會讓你輸入一個新的Target的名字, 而不像復制的方法中, 默認生成 xxxxx copy這樣的target名.

但是這樣生成出的Target幾乎是空的. Copy Bundle Resources, Compile Sources, Link Binary With Libraries里面都沒有任何內容. 編譯設置也是完全原始的狀態.

可以通過拖拽內容到這些target的設置中, 以及調整編譯選項來完成Target的配置。

Target中部分內容的修改方法

其實這段的部分內容, 在非多Targets的工程中也可能會用得到.

由于修改基本都是在工程/編譯設置中完成, 因此沒有特殊情況, 就不再聲明了, 打開target對應的工程/編譯設置的方法可以采用在該target上右鍵, 選擇get info來做到.

生成的product名稱的修改: Packing段內的Product Name一項

Info.plist文件名: Packing段內的Info.plist File一項, 比如復制出來的target覺得那個xxxxx copy.plist太傻就可以在這里改

條 件編譯: 增加一個User-Defined Setting(Target "xxxx" Info的build頁的左下角那個齒輪中可以看到這個內容), 在Other C Flag里面填入, 比如要定義一個叫做LITE_VERSION的define值, 我們可以寫上 "-DLITE_VERSION" 或 "-DLITE_VERSION=1". 那么在程序中就可以用

  1. #if defined(LITE_VERSION)   
  2. #else   
  3. #endif  

這樣的條件編譯來部分差異化代碼了

也許有些朋友記得我在代碼區貼過的檢測破解版的代碼, 其中有一種檢測方法就是看info.plist是文本還是二進制的, 那么我們能否建議一個模擬破解的target, 直接生成文本的info.plist以便測試呢?

當然可以, 在packing段內, 有一項叫"Info.plist Output Encoding", 默認值是Binary, 我們只要選成xml, 那么生成出的product.app內的info.plist就直接是文本樣式的了.

另外, 向Copy Bundle Resources, Compile Sources, Link Binary With Libraries內添加/刪除文件, 可以在要改動的文件上, 選擇get info, 并且切換到Target頁, 勾選要引用這個文件的target即可. 比如icon.png可以指定給默認target, 而icon_lite.png指定給lite verion的target

小結:XCode工程中 Targets講解的內容介紹完了,希望本文對你有所幫助!更多相關內容請參考編輯推薦。

原帖地址  http://www.cocoachina.com/bbs/read.php?tid-10972-fpage-0-toread--page-1.html

責任編輯:zhaolei 來源: 互聯網
相關推薦

2013-02-25 13:00:14

iOS開發xcode

2023-02-08 18:08:16

2011-07-07 09:20:30

Xcode

2011-07-19 15:44:18

Xcode 卸載

2011-07-28 14:31:55

Xcode 調試 異常

2016-03-31 09:18:11

xcodetargets管理

2011-08-18 10:26:43

XCode

2011-07-26 14:44:53

調試 Xcode

2011-08-08 17:31:30

Xcode 工程

2013-04-15 10:48:16

Xcode ARC詳解iOS ARC使用

2011-07-22 18:41:11

Xcode 文檔 腳本

2011-08-01 16:24:04

XCode CodeTimer 測試

2011-08-11 13:10:34

XcodeSVN

2013-04-08 10:27:59

iOSXcode制作靜態庫

2011-08-04 18:09:32

Xcode 技巧 文檔

2011-08-09 16:58:22

XCodeSDK

2011-07-28 13:47:20

Xcode Interface

2011-07-28 14:06:52

XCode XCode 3.2

2011-08-18 10:47:48

Xcode 4靜態庫

2011-07-06 17:48:30

iPhone Xcode 模擬器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久这里有精品 | 蜜桃精品视频在线 | 免费视频二区 | 日韩中文一区二区 | 在线色网 | av手机在线免费观看 | 中文字幕在线观看一区 | 在线观看国产视频 | 成人国产精品久久久 | 久久成人免费视频 | 亚洲欧美中文日韩在线v日本 | 中文字幕乱码一区二区三区 | 黄色网毛片 | 日韩一区二区三区av | 亚洲一区二区久久久 | 久久久综合精品 | 91精品国产91久久久久久 | 国产91精品久久久久久久网曝门 | 亚洲激情视频在线 | 韩日一区| 秋霞在线一区 | h片在线免费看 | 久久这里只有 | 国产一级一级国产 | 国产欧美一区二区三区另类精品 | 欧美日韩不卡 | 欧美精品在线播放 | 久久久久久久久久一区二区 | 精品国产一区二区三区久久影院 | 成人av一区 | 成人国产一区二区三区精品麻豆 | 成人免费看电影 | 欧美一区中文字幕 | 精品视频免费 | 少妇精品久久久久久久久久 | 91亚洲视频在线 | 国产精品视频中文字幕 | 91在线影院 | 欧美黄色一区 | 不卡一区二区三区四区 | 成人三级在线观看 |