Xamarin.iOS에서 IPA 지원IPA Support in Xamarin.iOS

이 문서에서는 테스트 또는 내부 응용 프로그램의 사내 배포를 위해 임시 배포를 사용하여 응용 프로그램을 배포하는 데 사용할 수 있는 IPA 파일을 만드는 방법에 대해 설명합니다.This article covers how to create an IPA file that can be used to deploy an application using Ad Hoc distribution, either for testing, or for In-House distribution of internal applications.

iTunes 앱 스토어를 통해 판매할 응용 프로그램을 릴리스하는 것 외에도 다음 용도로 배포할 수 있습니다.In addition to releasing an application for sale through the iTunes App Store, it can be deployed for the following uses:

  • 임시 테스트 - 알파 및 베타 테스트 목적으로 iOS 응용 프로그램을 최대 100명의 사용자(특정 iOS 장치 UUID로 식별)에게 배포할 수 있습니다.Ad Hoc Testing — An iOS application can be deployed to up to 100 users (identified by specific iOS device UUIDs) for Alpha and Beta testing purposes. Apple iOS 디바이스를 Apple 개발자 계정에 추가하는 방법에 대한 자세한 내용은 개발용 iOS 디바이스 프로비전 설명서를 참조하고, 이 방식으로 배포하는 방법에 대한 자세한 내용은 임시 가이드를 참조하세요.See our Provisioning an iOS Device for Development documentation for detailed information on adding test iOS devices to your Apple developer account, and the Ad-Hoc guide, for more information on how to distribute in this way.
  • 사내/엔터프라이즈 배포 - iOS 응용 프로그램은 Apple의 Developer Enterprise 프로그램 구성원 자격이 필요한 회사 내에서 내부적으로 배포할 수 있습니다.In House / Enterprise Deployment — An iOS application can be deployed internally, within a company, which requires membership of Apple's Developer Enterprise program. 사내 배포에 대한 자세한 내용은 사내 배포 가이드에서 자세히 설명하고 있습니다.More information on In House Distribution is detailed in the In House Distribution guide.

두 경우 모두에서 올바른 배포 프로비전 프로필을 사용하여 IPA 패키지(특수 유형의 zip 파일)를 만들고 디지털 서명해야 합니다.In either case, an IPA package (a special type of zip file) must be created and digitally signed with the correct Distribution Provisioning Profile. 이 문서에서는 Mac 또는 Windows PC에서 iTunes를 사용하여 IPA 패키지를 빌드하고 iOS 디바이스에 패키지를 설치하는 데 필요한 단계에 대해 설명합니다.This article covers the steps required to build the IPA package and install the package on an iOS device using iTunes on a Mac or Windows PC.

iTunesMetadata.plist 파일The iTunesMetadata.plist File

iOS 응용 프로그램(iTunes 앱 스토어의 판매 또는 무료 릴리스용)이 iTunes Connect에 만들어지면, 개발자가 응용 프로그램의 장르, 하위 장르, 저작권 표시, 지원되는 iOS 디바이스 및 필요한 디바이스 기능과 같은 정보를 지정할 수 있습니다.When an iOS application is created in iTunes Connect (either for sale or free release from the iTunes App Store), the developer can specify information such as the application's genre, sub genre, copyright notice, supported iOS devices and required device capabilities.

임시 또는 사내 배포를 통해 제공되는 iOS 응용 프로그램에는 iTunes 및 사용자 디바이스에 표시될 수 있도록 이 정보를 지원하는 몇 가지 방법이 필요합니다.iOS applications that are delivered either via Ad Hoc or In-House distribution, need to have some way to support this information so that it can be visible on iTunes and the user's device. 기본적으로 프로젝트를 빌드할 때마다 작은 iTunesMetadata.plist 파일이 만들어지며 프로젝트 디렉터리에 저장됩니다.By default, a small iTunesMetadata.plist file is created every time you build your project and is stored in the project directory.

또한 추가 정보를 배포에 제공하기 위해 사용자 지정 iTunesMetadata.plist를 만들 수도 있습니다.A custom iTunesMetadata.plist can also be created to supply the additional information to a distribution. 이 파일의 내용 및 만드는 방법에 대한 자세한 내용은 iTunesMetadata.plist 내용iTunesMetadata.plist 파일 만들기 설명서를 참조하세요.To find out more about the content of this file and how to create it, please see our The iTunesMetadata.plist Contents and Creating an iTunesMetadata.plist File documentation.

iTunes 아트워크iTunes Artwork

앱 스토어 이외의 수단을 통해 앱을 배달하는 경우 iTunes에서 응용 프로그램을 나타내는 데 사용할 512x512 및 1024x1024 이미지도 포함해야 합니다.When delivering your app through non-App Store means, you also need to include a 512x512 and a 1024x1024 image that will be used to represent your application in iTunes.

iTunes 아트워크를 지정하려면 다음을 수행합니다.To specify the iTunes Artwork, do the following:

  1. 편집하기 위해 솔루션 탐색기에서 Info.plist 파일을 두 번 클릭하여 엽니다.Double-click the Info.plist file in the Solution Explorer to open it for editing.
  2. 편집기의 iTunes 아트워크 섹션으로 스크롤합니다.Scroll to the iTunes Artwork section of the editor.
  3. 누락된 이미지가 있는 경우 편집기에서 썸네일을 클릭하고, 파일 열기 대화 상자에서 원하는 iTunes 아트워크에 대한 이미지 파일을 선택하고, 확인 또는 열기 단추를 누릅니다.For any missing image, click on the thumbnail in the editor, select the image file for the desired iTunes artwork from the Open File dialog box and click the OK or Open button.
  4. 응용 프로그램에 필요한 이미지를 모두 지정할 때까지 이 단계를 반복합니다.Repeat this step until all needed images have been specified for your application.

자세한 내용은 iTunes 아트워크 설명서를 참조하세요.Please see the iTunes Artwork documentation for more details.

IPA 만들기Creating an IPA

IPA 만들기는 이제 새 게시 워크플로에 내장됩니다.Creating an IPA is now built into the new publishing workflow. 이렇게 하려면 아래 지침에 따라 앱을 보관하고, 서명한 다음, IPA를 저장합니다.To do this, follow the instructions below to archive your app, sign it, and save your IPA.

플랫폼 간 솔루션용 IPA를 만들기 시작하기 전에 iOS 프로젝트를 시작 프로젝트로 선택했는지 확인합니다.Before starting to create an IPA for a cross-platform solution, ensure that you have selected the iOS project as your startup project:

보관 빌드Build your Archive

IPA를 빌드하려면 응용 프로그램의 릴리스 빌드에 대한 _보관_을 만들어야 합니다.To build an IPA, an archive of a release build of our application needs to be created. 이 보관에는 앱 및 이를 식별하는 정보가 포함됩니다.This Archive contains our app and identifying information about it.

  1. Mac용 Visual Studio에서 릴리스 | 디바이스 구성을 선택합니다.Select the Release | Device configuration in Visual Studio for Mac: !

  2. 빌드 메뉴에서 게시를 위해 보관을 선택합니다.From the Build menu, select Archive for Publishing:

  3. 보관이 만들어지면 보관 보기가 표시됩니다.Once the archive has been created, the Archives view will be displayed:

앱 서명 및 배포Sign and Distribute your App

보관용 응용 프로그램을 빌드할 때마다 보관 보기가 자동으로 열리고, 보관된 모든 프로젝트가 솔루션별로 그룹화되어 표시됩니다.Each time you build your application for Archive, it will automatically open the Archives View, displaying all archived projects; grouped by solution. 이 보기에는 기본적으로 현재 열려 있는 솔루션만 표시됩니다.By default, this view only shows the current, open solution. 보관이 있는 솔루션을 모두 보려면 모든 보관 표시 옵션을 클릭합니다.To see all solutions that have archives, click on the Show all archives option.

나중에 생성된 모든 디버그 정보를 기호로 나타낼 수 있도록 고객에게 배포된 보관 파일(임시 또는 사내 배포)을 유지하는 것이 좋습니다.It is recommended that archives deployed to customers (either Ad-Hoc or In-House deployments) be kept, so that any debug information that is generated can be symbolized at a later date.

앱 스토어가 아닌 경우 iTunesMetadata.plist 파일을 빌드하고, iTunes 아트워크 집합이 보관에 있는 경우 IPA에 자동으로 포함됩니다.Note that for non-App Store builds the iTunesMetadata.plist file, and iTunes artwork set will automatically be included in your IPA if they are found in the archive.

앱에 서명하고 배포할 준비를 하려면 다음을 수행합니다.To sign your app and prepare it for distribution:

  1. 아래 그림과 같이 서명 및 배포... 단추를 선택합니다.Select the Sign and Distribute... button, illustrated below:

  2. 그러면 게시 마법사가 열립니다.This will open the publishing wizard. 임시 또는 엔터프라이즈(사내) 배포 채널을 선택하여 패키지를 만듭니다.Select the Ad-Hoc or Enterprise(In-House) distribution channel to create a package:

  3. [프로비전 프로필] 화면에서 서명 ID 및 해당 프로비전 프로필을 선택하거나 다른 ID로 다시 서명합니다.On the Provisioning Profile screen, select your signing identity and corresponding provisioning profile, or re-sign with another identity:

  4. 패키지의 세부 정보를 확인하고 게시를 클릭합니다.Verify the details of your package, and click Publish:

  5. 마지막으로 IPA를 컴퓨터에 저장합니다.Finally, save your IPA to your machine:

명령줄을 통한 빌드(Mac에서)Building via the Command Line (On Mac)

CI 환경과 같은 경우에는 명령줄을 통해 IPA를 빌드해야 할 수도 있습니다.In certain cases, such as in a CI environment, it may be necessary to build you IPA via the command line. 이렇게 하려면 아래 단계를 수행합니다.Follow the steps below to achieve this:

  1. 프로젝트 옵션 > iOS IPA 옵션> iTunesArtwork 이미지 포함임시/엔터프라이즈 패키지(IPA) 빌드가 선택되어 있는지 확인합니다.Ensure Project Options > iOS IPA Options > Include iTunesArtwork images is checked and Build ad-hoc/enterprise package (IPA) is checked:

    대신, 원하는 경우 텍스트 편집기에서 .csproj 파일을 편집하고, 앱을 빌드하는 데 사용될 구성에 대한 두 개의 해당 속성을 PropertyGroup에 수동으로 추가할 수 있습니다.If you prefer, you can instead edit the .csproj file in a text editor and manually add the two corresponding properties to the PropertyGroup for the configuration that will be used to build the app:

    <BuildIpa>true</BuildIpa>
    <IpaIncludeArtwork>false</IpaIncludeArtwork>
    
  2. 선택적 iTunesMetadata.plist 파일을 포함하는 경우 ... 단추를 클릭하고, 목록에서 이 파일을 선택하고, 확인 단추를 클릭합니다.If you are including an optional iTunesMetadata.plist file, click the ... button, select it from the list and click the OK button:

  3. msbuild를 직접 호출하고 명령줄에서 이 속성을 전달합니다.Call msbuild directly and pass this property on the command line:

    /Library/Frameworks/Mono.framework/Commands/msbuild YourSolution.sln /p:Configuration=Ad-Hoc /p:Platform=iPhone /p:BuildIpa=true
    

IPA 위치 사용자 지정Customizing the IPA Location

.ipa 파일 출력 위치를 쉽게 사용자 지정할 수 있도록 새로운 IpaPackageDir MSBuild 속성이 추가되었습니다.A new MSBuild property IpaPackageDir has been added to make it easy to customize the .ipa file output location. IpaPackageDir을 사용자 지정 위치로 설정하면 .ipa 파일이 기본 타임스탬프가 적용된 하위 디렉터리 대신 해당 위치에 배치됩니다.If IpaPackageDir is set to a custom location, the .ipa file will be placed in that location instead of the default timestamped subdirectory. 이는 CI(지속적인 통합) 빌드에 사용되는 것과 같이 특정 디렉터리 경로를 올바르게 사용하도록 자동화된 빌드를 만들 때 유용할 수 있습니다.This can be useful when creating automated builds that rely on a specific directory path to work correctly, such as those used for Continuous Integration (CI) builds.

새 속성을 사용하는 방법에는 여러 가지가 있습니다.There are several possible ways to use the new property:

예를 들어 .ipa 파일을 이전의 기본 디렉터리(Xamarin.iOS 9.6 이하)로 출력하려면 다음 방법 중 하나를 사용하여 IpaPackageDir 속성을 $(OutputPath)로 설정할 수 있습니다.For example, to output the .ipa file to the old default directory (as in Xamarin.iOS 9.6 and lower), you can set the IpaPackageDir property to $(OutputPath) using one of the following approaches. 두 방법은 모두 IDE 빌드 및 msbuild, xbuild 또는 mdtool을 사용하는 명령줄 빌드를 포함하여 모든 Unified API Xamarin.iOS 빌드와 호환됩니다.Both approaches are compatible with all Unified API Xamarin.iOS builds, including IDE builds as well as command-line builds that use msbuild, xbuild, or mdtool:

  • 첫 번째 옵션은 MSBuild 파일의 <PropertyGroup> 요소 내에 IpaPackageDir 속성을 설정하는 것입니다.The first option is to set the IpaPackageDir property within a <PropertyGroup> element in an MSBuild file. 예를 들어 다음 <PropertyGroup>.csproj iOS 앱 프로젝트 파일의 아래쪽(닫은 </Project> 태그 바로 앞)에 추가할 수 있습니다.For example, you could add the following <PropertyGroup> to the bottom of the iOS app project .csproj file (just before the closing </Project> tag):

    <PropertyGroup>
        <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • .ipa 파일을 빌드하는 데 사용되는 구성에 해당하는 기존 <PropertyGroup>의 아래쪽에 <IpaPackageDir> 요소를 추가하는 것이 더 좋습니다.A better approach is to add a <IpaPackageDir> element to the bottom of the existing <PropertyGroup> that corresponds to the configuration used to build the .ipa file. 이는 iOS IPA 옵션 프로젝트 속성 페이지에서 계획된 설정과의 향후 호환성을 위해 프로젝트를 준비하기 때문입니다.This is better because it will prepare the project for future compatibility with a planned setting on the iOS IPA Options project properties page. 현재 Release|iPhone 구성을 사용하여 .ipa 파일을 빌드하는 경우 업데이트된 속성 그룹 전체는 다음과 비슷할 수 있습니다.If you currently use the Release|iPhone configuration to build the .ipa file, the complete updated property group might look similar to the following:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
        <Optimize>true</Optimize>
        <OutputPath>bin\iPhone\Release</OutputPath>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <ConsolePause>false</ConsolePause>
        <CodesignKey>iPhone Developer</CodesignKey>
        <MtouchUseSGen>true</MtouchUseSGen>
        <MtouchUseRefCounting>true</MtouchUseRefCounting>
        <MtouchFloat32>true</MtouchFloat32>
        <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
        <MtouchLink>SdkOnly</MtouchLink>
        <MtouchArch>;ARMv7, ARM64</MtouchArch>
        <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
        <MtouchTlsProvider>Default</MtouchTlsProvider>
        <PlatformTarget>x86&</PlatformTarget>
        <BuildIpa>true</BuildIpa>
        <IpaPackageDir>$(OutputPath</IpaPackageDir>
    </PropertyGroup>
    

msbuild 또는 xbuild 명령줄 빌드에 대한 또 다른 방법은 /p: 인수를 추가하여 IpaPackageDir 속성을 설정하는 것입니다.An alternate technique for msbuild or xbuild command-line builds is to add a /p: argument to set the IpaPackageDir property. 이 경우 msbuild는 명령줄에서 전달된 $() 식을 확장하지 않으므로 $(OutputPath) 구문을 사용할 수 없습니다.In this case note that msbuild does not expand $() expressions passed in on the command line, so it is not possible to use the $(OutputPath) syntax. 대신 전체 경로 이름을 제공해야 합니다.You must instead provide a full path name. Mono의 xbuild 명령은 $() 식을 확장하지만 플랫폼 간 버전의 msbuild를 선호하여 xbuild는 사용 중단되었므로 전체 경로 이름을 사용하는 것이 좋습니다.Mono's xbuild command does expand $() expressions, but it is still preferable to use a full path name because xbuild has been deprecated in favor of the cross-platform version of msbuild.

이 방법을 사용하는 전체 예제는 Windows에서 다음과 비슷하게 보일 수 있습니다.A complete example that uses this approach might look similar to the following on Windows:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

또는 Mac에서 다음과 같습니다.Or the following on Mac:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

iTunes를 사용하여 IPA 설치Installing an IPA using iTunes

결과 IPA 패키지는 테스트 사용자에게 전달되어 iOS 디바이스에 설치하거나 엔터프라이즈 배포용으로 제공될 수 있습니다.The resulting IPA Package can be delivered to your test users for installing on their iOS devices or shipped for Enterprise deployment. 선택된 방법에 관계없이 최종 사용자는 IPA 파일을 두 번 클릭하거나 열려 있는 iTunes 창으로 끌어서 Mac 또는 Windows PC의 iTunes 응용 프로그램에 패키지를 설치합니다.No matter which method is chosen, the end user will install the package in their iTunes application on their Mac or Windows PC by double-clicking the IPA file (or dragging it onto the open iTunes window).

새 iOS 응용 프로그램은 My Apps 섹션에 표시되며, 여기서 마우스 오른쪽 단추를 클릭하고 응용 프로그램에 대한 정보를 얻을 수 있습니다.The new iOS application will be shown in the My Apps section, where you can right-click on it and get information about the application:

이제 사용자는 iTunes를 자신의 디바이스와 동기화하여 새 iOS 응용 프로그램을 설치할 수 있습니다.The user can now sync iTunes with their device to install the new iOS application.

요약Summary

이 문서에서는 앱 스토어 이외의 빌드를 위한 Xamarin.iOS 응용 프로그램을 준비하는 데 필요한 설정에 대해 설명했습니다.This article covered the setup required to prepare a Xamarin.iOS application for a non-App Store build. IPA 패키지를 만드는 방법 및 테스트 또는 사내 배포를 위해 최종 사용자의 iOS 디바이스에 결과 iOS 응용 프로그램을 설치하는 방법을 보여 주었습니다.It showed how to create an IPA Package and has how to install the resulting iOS application on the end user's iOS device for testing or In-House Distribution.