Xamarin.iOS 測試及部署 - 疑難排解

程式碼簽署與佈建

利用 iOS 進行程式碼簽署和佈建可能非常棘手,因此務必要確定程式碼簽署憑證與佈建設定檔井然有序。

  • 大型的團隊應該避免使用 Xcode 中的 [Fix issue] \(修正問題\) 按鈕,如下圖所示:

    The Fix Issues dialog

    這將會建立新的佈建設定檔和憑證。 從好處想,這會在每次小組成員按一下佈建設定檔時建立一個佈建設定檔,造成設定檔混亂。 從壞處想,它將會撤銷公司內其他人的憑證,導致其應用程式停止運作。

  • 保持「鑰匙圈存取」井然有序,並刪除過期的憑證和設定檔。 企業憑證可持續使用三年,其他憑證則僅能持續使用一年。 您無法更新憑證,因此需要在舊的憑證到期之前建立新的憑證。 請務必撤銷並刪除舊的憑證,並使用新的憑證重新簽署應用程式。

  • 安裝新的佈建設定檔時,移除舊的佈建設定檔。 這表示 Visual Studio for Mac 不需要決定要使用哪個設定檔。 若要達成此目的,請先確定刪除Apple開發人員中心的配置檔,然後流覽至 > [喜好設定您的帳戶>檢視詳細數據...]。選取布建配置檔,然後按下 [在 Finder 中顯示]。 這將顯示設定檔在 Mac 檔案系統中的位置,之後就可以使用 Finder 刪除該位置。

  • 請確認所有必要的憑證和對應的私密金鑰都可以使用。 因為每個小組都需要一個開發人員憑證 (以便在自己的裝置上安裝應用程式),以及一個散發憑證 (以安裝在其他裝置上)

  • 安裝新的佈建設定檔或憑證時,重新啟動 Xcode 和 Visual Studio for Mac / Visual Studio。

TestFlight

有時候測試不如預期順暢。 下列步驟有助於使用 TestFlight 解決問題:

  • TestFlight 僅適用於以 iOS 8 和更新版本為目標的應用程式。

  • 必須要有具備 Beta 權利的 App Store 散發設定檔

  • [New iOS App submission] \(新的 iOS 應用程式提交\) 視窗必須包含與應用程式的 Info.plist 完全相同的資訊,而且必須填入所有區段。 必須針對應用程式指定圖示,才能上傳至 TestFlight。

  • 上傳新的組建時,需要 1 到 5 分鐘的時間,直到組建出現在 iTunes Connect 中為止。

  • 您必須為每個版本的應用程式開啟 TestFlight Beta Testing \(TestFlight Beta 測試\) 開關。

  • 同時也是內部測試人員的每個開發人員小組成員都必須開啟 [Internal Tester] \(內部測試人員\) 開關。

  • 屬於或擁有另一個 iTunes Connect 帳戶的使用者不得為內部測試人員。 他們只能新增為外部測試人員。

  • 您可以個別新增、選取和邀請內部和外部使用者。 每個清單都必須受到個別管理。

  • Apple 必須核准將散發給外部測試人員的每個組建。 如果組建版本變更,則需要由 Apple 進行新的 Beta 審查。 如果組建編號變更,則審查是選擇性的。

  • 中繼資料必須加入至散發給外部測試人員的組建。 單擊發行前版本 我的應用程式 > 中的組建編號,即可存取此專案。

  • 每天只能提交兩個組建以供審查。 因為變更版本會強制進行審查,這表示每天只能變更版本號碼兩次。

自動將 .app 套件組合複製回 Windows

在 Visual Studio 和 Mac Build Agent 中建置 iOS 應用程式時,.app 套件組合不會複製回 Windows 電腦。 適用於 Visual Studio 7.4 的 Xamarin 工具加入一個新的 CopyAppBundle 屬性,可讓 CI 組建將 .app 套件組合複製回 Windows。

若要使用此功能,請將 CopyAppBundle 屬性加入至 .csproj 中您想要套用此功能的屬性群組底下。 例如,下列範例示範如何將 .app 套件組合複製回 Windows 電腦,以取得適用於 iPhoneSimulator偵錯組建:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
    <CopyAppBundle>true</CopyAppBundle>
</PropertyGroup>