建立方便大家安裝到手機的 Xcode 專案 — 搭配 xcconfig & Team ID

最近下載 Apple 官方的範例程式時,發現一件很特別的事。Bundle ID 不用做任何的修改,範例程式即可順利地安裝到手機。

但是正常情況下這是不可能的事呀。世界上有那麼多人下載 Apple 的範例,若是它們註冊了專案的 Bundle ID,其它人就不能再使用同樣的 Bundle ID,安裝 App 到手機時將出現類似下圖的錯誤訊息。

彼得潘研究了 Apple 的專案後,發現它的 Bundle ID 結尾有一串特別的亂碼,正是它讓大家下載專案後產生獨一無二的 ID,順利將 App 安裝到手機。

其中的關鍵則藏在 SampleCode.xcconfig。

到底 Apple 是怎麼產生獨一無二的 Bundle ID 呢 ? 接下來讓我們重頭建個新專案,模仿 Apple 製作人人都能將 App 安裝到手機的 Xcode 專案。

新增 Configuration Settings File (xcconfig 檔)

打開 Xcode 專案,新增 Configuration Settings File。

模仿 Apple 取名為 SampleCode。(ps: 也可以取名任何你喜歡的名字)

在 SampleCode.xcconfig 加入代表 Team ID 的代號

DEVELOPMENT_TEAM 代表我們開發帳號的 Team ID,每個開發帳號都會有個獨一無二的 Team ID。我們將 Team ID 存在 SAMPLE_CODE_DISAMBIGUATOR,到時我們將利用它產生獨一無二的 Bundle ID,原理等下會說明。

SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM}

設定 Product Bundle Identifier,在結尾加上 ${SAMPLE_CODE_DISAMBIGUATOR}

切換到 TARGETS App 的 Build Settings 頁面,找到 Product Bundle Identifier。

點選上圖的 com.peter.Demo,在輸入框的結尾輸入 ${SAMPLE_CODE_DISAMBIGUATOR}

${SAMPLE_CODE_DISAMBIGUATOR} 將被置換成 Team ID,換句話說,產生的 Bundle ID 將是 com.peter.Demo 加上 Team ID,因此每個人下載專案後都能安裝到手機,因為每個人的 Team ID 不同,產生的 Bundle ID 也就不會重覆。

設定專案的 configuration 使用 SampleCode.xcconfig

現在我們剩下最後一步,設定專案採用 SampleCode.xcconfig,如此 Xcode 才能找到它裡面定義的 SAMPLE_CODE_DISAMBIGUATOR。

找到專案 Info 頁面的 Configurations 區塊,點選下圖的 None 設定搭配的 configuration 檔。

選擇 SampleCode。

設定 App Signing 的 Team,產生獨一無二的 Bundle ID

將 App 安裝到手機前,我們必須設定 App 綁定的 Apple ID。在 Signing & Capabilities 頁面的 Team 欄位設定 Apple ID。

設定後神奇的事發生了 ! 原本的 Bundle ID com.peter.Demo 自動變成 com.peter.Demo 加上 Team ID,再也不用害怕 Bundle ID 跟別人重覆了。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com