建置適用於 iOS 的 Xamarin 應用程式

重要

Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。

深入瞭解支持時程表和替代方案。

注意

支援的版本和需求 App Center 支援可攜式類別庫 (PCL) 和 .NET Standard 專案。 如需 .NET Standard 版本,請參閱 雲端組建機器 。 App Center 不支援來自 Xamarin 元件存放區的元件,建議您隨時使用 NuGet 套件。 如果您使用無法取代的元件,請與我們連絡。 請參閱 說明與意見反應

若要開始建置您的第一個 Xamarin iOS 應用程式,您必須:

  1. (GitHub、Bitbucket、VSTS、Azure DevOps) 連線到您的存放庫服務帳戶。
  2. 選取您應用程式所在的存放庫和分支。
  3. 設定組建的專案或工作區,以及您想要建置的配置。

注意

若要讓應用程式在真實裝置上執行,組建必須以有效的布建配置檔和憑證簽署程序代碼。

1.連結您的存放庫

如果您先前尚未連線到存放庫服務帳戶,則必須加以連線。 一旦您的帳戶連線,請選取 iOS 專案所在的存放庫。 若要設定存放庫的組建,您需要管理員和提取許可權。

2.選取分支

選取存放庫之後,請選取您要建置的分支。 根據預設,所有作用中的分支都會列出。

3.設定您的第一個組建

第一次建置之前,必須設定 Xamarin 專案。

3.1. 專案/方案

如果 App Center 位於分析範圍內,App Center 會自動偵測存放庫中的解決方案和項目檔。 選取您想要建置 的.sln.csproj/.fsproj

注意

為了達到最佳效能,分析目前僅限於兩個目錄層級 ,.sln ,而 .csproj/fsproj 有四個目錄層級,包括存放庫的根目錄。

3.1.1. 從方案檔建置 (.sln)

在您的程式代碼中,請務必針對適用於 iOS 組建的組建組態停用 Android 和 UWP 專案:移至解決方案的組態對應,以及針對以 iPhoneiPhoneSimulator 為目標的所有對應,取消選取以其他平臺為目標的所有專案。 這項變更可確保 在建置.sln 時,不會嘗試建置其他專案。 您可以閱讀更多 解決方案組態對應資訊

3.1.2. 從項目檔建置 (.csproj/.fsproj)

例如,若要從 .csproj/.fsproj 檔案建置所有參考的專案 (,PCL 專案) 必須包含與來源 iOS 專案相同名稱的組態。 因此,如果您在 App Center 中執行模擬器的 錯設定,PCL 項目必須具有 Debug|iPhoneSimulator 設定。 如果不存在,而且為了防止進一步的錯誤,我們會在建置專案之前新增這類設定。 這些組態只有偵錯和發行的基本預設設定。

3.2. 設定

選取您想要用來建置的組態。 系統會根據上一個步驟中挑選的來源檔案自動偵測設定。

3.3. Mono 版本

App Center 可讓您使用與個別 Xamarin.iOS SDK 搭配的不同 Mono 環境,讓您的組建維持回溯相容性,同時發行新功能的支援。 新分支組態的預設Mono將會是最新的穩定單一。 您可以選擇使用其中一個先前的 Mono 環境來建置舊版的架構或連結庫。 當您選擇不同的Mono版本時,您會看到與其配套的 Xamarin.iOS SDK 版本。 若要追蹤 Xamarin SDK 版本更新,您可以在 Xamarin 版本部落格中閱讀文章。

3.3.1. .NET 版本

系統會根據用於組建的 Xamarin.iOS 版本自動選取適當的 .NET 版本,且無法覆寫。 您可以在下表中檢視 Xamarin.iOS 與我們的服務所使用的 .NET 對應:

Xamarin.iOS .NET
13.20 3.1.401
14.0 3.1.401
14.2 3.1.401
14.4 3.1.401
14.6 5.0.100
14.8 5.0.100
14.10 5.0.100
14.14 5.0.100
14.16 5.0.100
14.20 5.0.100
15 5.0.100
15.2 5.0.100
15.4 5.0.100
15.6 5.0.100
15.8 5.0.100
15.10 5.0.100
15.12 5.0.100
16.0 5.0.100
16.0 (.NET 6) 6.0.405
16.1 6.0.405
16.2 6.0.405

3.4. Xcode 版本

目前支援的 Xamarin 版本需要 Xcode 11.7 或更高版本

3.5. 建置觸發程式

根據預設,每當開發人員推送至已設定的分支時,就會觸發新的組建。 如果您想要手動觸發新的組建,您可以在組態窗格中變更此設定。

3.6. 模擬器組建

模擬器組建只能在模擬器上執行,且無法安裝在裝置上,不過組建完成的速度會比裝置組建快。 如果您的組建不是模擬器組建,您必須在下一個步驟中上傳程式代碼簽署檔案。

3.7. 遞增組建編號

啟用時, CFBundleVersion 應用程式 Info.plist 中的 會自動遞增每個組建。 變更會在建置前進行,且不會認可至您的存放庫。

3.8. 程式碼簽署

成功的裝置組建會產生IPA檔案。 若要在裝置上安裝組建,必須使用有效的布建配置檔和憑證簽署。 若要簽署從分支產生的組建,請在組態窗格中啟用程式代碼簽署,並將 布建配置檔上傳 (.mobileprovision) 和有效的憑證 (.p12) ,以及憑證的密碼。 您可以在 Xamarin 檔案中深入瞭解 Xamarin iOS 應用程式的程式代碼簽署和裝置佈建。

具有 應用程式或 watchOS 擴充功能的應用程式 需要簽署每個延伸模組的額外布建配置檔。

注意

在包含 Xamarin watchOS 應用程式的項目中執行nuget restore,有一個問題。 在 App Center 上建置 watchOS 應用程式,而不需要因應措施會導致錯誤:

Project <project> is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0) / win-x86. Project <project> supports: xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0).

若要在 App Center 上建置 watchOS 應用程式,需要因應措施。 在包含 iOS 專案中,此項目參考監看式應用程式時 必須包含一行:

<ReferenceOutputAssembly>False</ReferenceOutputAssembly>

具有因應措施的 WatchApp 參考範例:

    <ProjectReference Include="..\MyWatchApp\MyWatchApp.csproj">
      <Project>{59EB034F-3D29-43A5-B89F-124879504771}</Project>
      <Name>MyWatchApp</Name>
      <IsWatchApp>True</IsWatchApp>
      <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
    </ProjectReference>

3.9. 在真實裝置上啟動您的成功建置

使用您新產生的 .ipa 檔案來測試您的應用程式是否在實際裝置上啟動。 啟動測試會在建置時間增加約10分鐘。 您可能想要檢查測試組建的更 完整指南

3.10. NuGet 還原

如果 NuGet.config 檔案已簽入存放庫,並位於 存放庫.sln 或存放庫的根層級旁邊,App Center 會在新增您的私人 NuGet 摘要時還原它們,如下列範例所示。 您可以使用 環境變數安全地新增認證:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
    <add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSourceCredentials>
    <MyAuthNuget>
      <add key="Username" value="$USER_VARIABLE" />
      <add key="ClearTextPassword" value="$PASSWORD_VARIABLE" />
    </MyAuthNuget>
  </packageSourceCredentials>
</configuration>

如果您有複雜的設定,而且需要詳細資訊,請參閱 設定 NuGet 行為

3.11. 散發至通訊群組

您可以將每個成功的組建從分支設定為發佈至先前建立的通訊群組。 您可以從 [散發] 區段內新增通訊群組。 一律有一個名為「共同作業者」的預設通訊群組,其中包含可存取應用程式的所有使用者。

儲存設定之後,系統會自動啟動新的組建。

4.建置結果

觸發建置之後,它可以處於下列狀態:

  • queued - 組建位於等候資源釋放的佇列中。
  • building - 組建正在執行和執行預先定義的工作。
  • succeeded - 建置已順利完成。
  • failed - 建置因失敗而停止。 您可以下載並檢查組建記錄檔,以針對發生錯誤的問題進行疑難解答。
  • 已取消 - 組建已由用戶動作或逾時取消。

4.1. 組建記錄

如需完成的建置 (成功或失敗) ,請下載記錄以深入瞭解組建的運作方式。 App Center 提供具有下列檔案的封存:

|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
    |-- <build-step-1> (e.g. 2_Get Sources.txt)
    |-- <build-step-2> (e.g. 3_Pod install.txt)
    |--
    |-- <build-step-n> (e.g. n_Post Job Cleanup.txt)

建置步驟特定記錄 (位於 build/ 封存) 的目錄中,有助於針對建置失敗的步驟和原因進行疑難解答和瞭解。

4.2. 應用程式 (.ipa.app)

.ipa是包含 iOS 應用程式的 iOS 應用程式封存盤案。 如果組建已正確簽署, .ipa 則可以安裝在實際裝置上,對應至簽署時所使用的布建配置檔。 App Center 有更多 有關程式代碼簽署和散發的詳細數據。

如果應用程式是模擬器組建,您可以在模擬器上執行 .app 檔案,但無法在實際裝置上使用。

4.3. 符號檔 (.dsym)

符號檔只會針對裝置組建產生。 .dsym 檔案包含應用程式的偵錯符號。

  • 如果您先前已將App Center SDK與已啟用當機報告模組整合,當機報告服務需要此 .dsym 檔案,組建才能顯示人類可讀取的 (符號式) 當機報告。
  • 如果您先前已將另一個 SDK 整合到應用程式中的當機報告 (,例如 HockeyApp SDK) ,則對應的服務會要求 .dsym 檔案顯示人類可讀取的當機報告。