영어로 읽기

다음을 통해 공유


iOS용 Xamarin 앱 빌드

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

참고

지원되는 버전 및 요구 사항 App Center는 PCL(이식 가능한 클래스 라이브러리) 및 .NET Standard 프로젝트를 지원합니다. .NET Standard 버전은 Cloud Build Machines 를 참조하세요. App Center는 Xamarin 구성 요소 저장소의 구성 요소를 지원하지 않으며 사용할 수 있을 때마다 NuGet 패키지를 사용하는 것이 좋습니다. 교체할 수 없는 구성 요소를 사용하는 경우 문의하세요. 도움말 및 피드백을 참조하세요.

첫 번째 Xamarin iOS 앱 빌드를 시작하려면 다음을 수행해야 합니다.

  1. 리포지토리 서비스 계정(GitHub, Bitbucket, VSTS, Azure DevOps)에 연결합니다.
  2. 앱이 있는 리포지토리 및 분기를 선택합니다.
  3. 빌드의 프로젝트 또는 작업 영역과 빌드하려는 체계를 구성합니다.

참고

앱이 실제 디바이스에서 실행되려면 빌드가 유효한 프로비저닝 프로필 및 인증서로 서명된 코드여야 합니다.

1. 리포지토리 연결

이전에 리포지토리 서비스 계정에 연결하지 않은 경우 연결해야 합니다. 계정이 연결되면 iOS 프로젝트가 있는 리포지토리를 선택합니다. 리포지토리에 대한 빌드를 설정하려면 관리자 및 끌어오기 권한이 필요합니다.

2. 분기 선택

리포지토리를 선택한 후 빌드할 분기를 선택합니다. 기본적으로 모든 활성 분기가 나열됩니다.

3. 첫 번째 빌드 설정

첫 번째 빌드 전에 Xamarin 프로젝트를 구성해야 합니다.

3.1. 프로젝트/솔루션

App Center는 분석 범위 내에 있는 경우 리포지토리의 솔루션 및 프로젝트 파일을 자동으로 검색합니다. 빌드하려는 .sln 또는 .csproj/.fsproj 를 선택합니다.

참고

최상의 성능을 위해 분석은 현재 .sln 대한 두 개의 디렉터리 수준과 리포지토리의 루트를 포함하여 .csproj/fsproj 에 대한 4개의 디렉터리 수준으로 제한됩니다.

3.1.1. 솔루션 파일에서 빌드(.sln)

코드에서 iOS 빌드용 빌드 구성에 Android 및 UWP 프로젝트를 사용하지 않도록 설정해야 합니다. 솔루션의 구성 매핑으로 이동하고 iPhone 및 iPhoneSimulator를 대상으로 하는 모든 매핑에 대해 다른 플랫폼을 대상으로 하는 모든 프로젝트의 선택을 취소합니다. 이렇게 변경하면 .sln 빌드할 때 다른 프로젝트를 빌드하려고 시도하지 않습니다. 읽을 수 있는 더 많은 솔루션 구성 매핑 정보가 있습니다.

3.1.2. 프로젝트 파일에서 빌드(.csproj/.fsproj)

.csproj/.fsproj 파일에서 빌드하려면 참조된 모든 프로젝트(예: PCL 프로젝트)에 원본 iOS 프로젝트의 이름과 동일한 이름의 구성이 포함되어야 합니다. 따라서 App Center에서 시뮬레이터에 대한 디버그 구성을 실행하는 경우 PCL 프로젝트에 디버그|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 버전

적절한 .NET 버전은 빌드에 사용되는 Xamarin.iOS 버전에 따라 자동으로 선택되며 덮어쓸 수 없습니다. 아래 표에서 서비스에서 사용하는 .NET에 대한 Xamarin.iOS 매핑을 볼 수 있습니다.

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 - 실패로 인해 빌드가 중지되었습니다. 빌드 로그를 다운로드하고 검사하여 잘못된 문제를 해결할 수 있습니다.
  • canceled - 사용자 작업으로 인해 빌드가 취소되었거나 시간이 초과되었습니다.

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 .