IPA-Unterstützung in Xamarin.iOSIPA Support in Xamarin.iOS

In diesem Artikel erfahren Sie, wie Sie eine IPA-Datei erstellen können, die zum Bereitstellen einer App mit der Ad-hoc-Verteilung verwendet werden kann oder zur internen Verteilung interner Anwendungen.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.

Sie können eine Anwendung im iTunes App Store nicht nur für den Verkauf veröffentlichen, sondern auch für folgende Aktionen bereitstellen:In addition to releasing an application for sale through the iTunes App Store, it can be deployed for the following uses:

  • Ad-hoc-Tests: Eine iOS-Anwendung kann bis zu 100 Benutzern für Alpha- oder Betatests bereitgestellt werden. Diese Benutzer werden anhand spezifischer UUIDs der iOS-Geräte identifiziert.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. Sehen Sie sich die Dokumentation zur Bereitstellung von iOS-Geräten für die Entwicklung an, um ausführlichere Informationen zum Hinzufügen von iOS-Testgeräten zu Ihrem Apple-Entwicklerkonto zu erhalten. Zudem finden Sie im Ad-hoc-Leitfaden weitere Informationen zu derartigen Verteilungen.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.
  • Interne /Unternehmensbereitstellung: Eine iOS-Anwendung kann intern innerhalb eines Unternehmens bereitgestellt werden, wozu eine Mitgliedschaft im Developer Enterprise-Programm von App erforderlich ist.In House / Enterprise Deployment — An iOS application can be deployed internally, within a company, which requires membership of Apple's Developer Enterprise program. Weitere Informationen zur internen Verteilung finden Sie im Leitfaden zur internen Verteilung.More information on In House Distribution is detailed in the In House Distribution guide.

In beiden Fällen muss ein IPA-Paket erstellt und digital mit dem richtigen Verteilungsbereitstellungsprofil signiert werden.In either case, an IPA package (a special type of zip file) must be created and digitally signed with the correct Distribution Provisioning Profile. In diesem Artikel werden die Schritte erläutert, die zum Erstellen des IPA-Pakets und dessen Installation auf einem iOS-Gerät mit iTunes auf einem Mac oder Windows-PC erforderlich sind.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.

Die „iTunesMetadata.plist“-DateiThe iTunesMetadata.plist File

Beim Erstellen einer iOS-Anwendung in iTunes Connect (entweder zum Verkauf oder für die kostenlose Veröffentlichung im iTunes App Store) kann der Entwickler die folgenden Angaben machen: Genre, Subgenre, Urheberrechtshinweis, unterstützte iOS-Geräte und Geräteanforderungen.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-Anwendungen, die über die Ad-hoc- oder interne Verteilung bereitgestellt werden, müssen diese Angabe unterstützen, sodass sie in iTunes und auf dem Gerät des Benutzers angezeigt werden können.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. Standardmäßig wird eine kleine „iTunesMetadata.plist“-Datei immer dann erstellt, wenn Sie ein Projekt erstellen. Sie wird im Projektverzeichnis gespeichert.By default, a small iTunesMetadata.plist file is created every time you build your project and is stored in the project directory.

Sie können auch eine benutzerdefinierte iTunesMetadata.plist-Datei erstellen, um die Zusatzinformationen für eine Verteilung bereitzustellen.A custom iTunesMetadata.plist can also be created to supply the additional information to a distribution. Weitere Informationen zum Inhalt dieser Datei und wie Sie diese erstellen finden Sie in der Dokumentation zum Inhalt der „iTunesMetadata.plist“-Datei und Creating an iTunesMetadata.plist File (Erstellen einer „iTunesMetadata.plist “-Datei).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-GrafikiTunes Artwork

Wenn Sie Ihre App nicht über den App Store bereitstellen, müssen Sie zudem ein 512x512 und ein 1024x1024 großes Bild bereitstellen, das das Symbol für Ihre App in iTunes wird.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.

Um die iTunes-Grafik festzulegen, führen Sie Folgendes aus:To specify the iTunes Artwork, do the following:

  1. Doppelklicken Sie auf die info.plist-Datei im Projektmappen-Explorer, um sie zu öffnen und zu bearbeiten.Double-click the Info.plist file in the Solution Explorer to open it for editing.
  2. Scrollen Sie zum Bereich iTunes Artwork (iTunes-Grafik) im Editor.Scroll to the iTunes Artwork section of the editor.
  3. Falls ein Bild fehlt, klicken Sie auf die Miniaturansicht im Editor, und wählen Sie aus dem Dialogfeld Datei öffnen die Bilddatei für die gewünschte iTunes-Grafik aus, und klicken Sie anschließend auf OK oder Öffnen.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. Wiederholen Sie diesen Schritt, bis alle benötigten Bilder für Ihre Anwendung angegebene wurden.Repeat this step until all needed images have been specified for your application.

Sehen Sie sich die Dokumentation zu iTunes-Grafik an, um weitere Details zu erhalten.Please see the iTunes Artwork documentation for more details.

Erstellen einer IPA-DateiCreating an IPA

Das Erstellen einer IPA-Datei ist nun in den neuen Veröffentlichungsworkflow integriert.Creating an IPA is now built into the new publishing workflow. Folgen Sie dazu den unten stehenden Anweisungen, um Ihre App zu archivieren, sie zu signieren und Ihre IPA-Datei zu speichern.To do this, follow the instructions below to archive your app, sign it, and save your IPA.

Bevor Sie mit dem Erstellen einer IPA-Datei für eine plattformübergreifende Lösung beginnen, stellen Sie sicher, das Sie das iOS-Projekt als Startprojekt ausgewählt haben:Before starting to create an IPA for a cross-platform solution, ensure that you have selected the iOS project as your startup project:

Das iOS-Projekt als Startprojekt festlegen

Erstellen des ArchivsBuild your Archive

Um eine IPA-Datei erstellen zu können, müssen Sie ein Archiv eines Releasebuilds der Anwendung erstellen.To build an IPA, an archive of a release build of our application needs to be created. Dieses Archiv enthält die App und deren identifizierenden Informationen.This Archive contains our app and identifying information about it.

  1. Wählen Sie in Visual Studio für Mac die Konfiguration Release | Gerät aus: !Select the Release | Device configuration in Visual Studio for Mac: !

    Die Konfiguration „Release | Gerät“ auswählen

  2. Wählen Sie aus dem Build-Menü die Option Zur Veröffentlichung aktivieren:From the Build menu, select Archive for Publishing:

    „Zur Veröffentlichung archivieren“ auswählen

  3. Sobald das Archiv erstellt wurde, wird die Archivansicht angezeigt:Once the archive has been created, the Archives view will be displayed:

    Die Ansicht „Archive“ wird angezeigt.

Signieren und Verteilen Ihrer AppSign and Distribute your App

Beim Erstellen Ihrer Anwendung für das Archiv wird automatisch die Archivansicht geöffnet. Darin werden alle archivierten Projekte nach Projektmappe gruppiert angezeigt.Each time you build your application for Archive, it will automatically open the Archives View, displaying all archived projects; grouped by solution. Standardmäßig wird in dieser Ansicht nur die aktuelle geöffnete Projektmappe angezeigt.By default, this view only shows the current, open solution. Klicken Sie auf Alle Archive anzeigen, um alle Projektmappen mit Archiven anzuzeigen.To see all solutions that have archives, click on the Show all archives option.

Es wird empfohlen, Archive beizubehalten, die den Kunden bereitgestellt wurden (App Store- oder Unternehmensbereitstellungen). Dadurch können alle generierten Debuginformationen zu einem späteren Zeitpunkt symbolisiert werden.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.

Beachten Sie, dass für Builds, die nicht über den App Store laufen, die iTunesMetadata.plist-Datei und die iTunes-Grafiken automatisch in Ihre IPA-Datei einbezogen werden, wenn Sie im Archiv vorhanden sind.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.

Gehen Sie folgendermaßen vor, um Ihre App für die Verteilung zu signieren und vorzubereiten:To sign your app and prepare it for distribution:

  1. Klicken Sie wie unten dargestellt auf die Schaltfläche Signieren und verteilen... :Select the Sign and Distribute... button, illustrated below:

    „Signieren und verteilen...“ auswählen

  2. Dadurch wird der Veröffentlichungs-Assistent geöffnet.This will open the publishing wizard. Entscheiden Sie sich zur Erstellung eines Pakets zwischen den Verteilungskanälen Ad-hoc und Unternehmen (Intern).Select the Ad-Hoc or Enterprise(In-House) distribution channel to create a package:

    Die interne Verteilung „Ad-hoc“ oder „Unternehmen“ auswählen

  3. Wählen Sie auf der Seite „Bereitstellungsprofil“ Ihre Signierungsidentität sowie das entsprechende Bereitstellungsprofil aus, oder signieren Sie mit einer anderen Identität erneut:On the Provisioning Profile screen, select your signing identity and corresponding provisioning profile, or re-sign with another identity:

    Die Signieridentität und das entsprechende Bereitstellungsprofil auswählen

  4. Überprüfen Sie die Details Ihres Pakets, und klicken Sie auf Veröffentlichen:Verify the details of your package, and click Publish:

    Die Paketdetails überprüfen

  5. Speichern Sie als Letztes die IPA-Datei auf Ihrem Computer:Finally, save your IPA to your machine:

    Die IPA-Datei auf dem Computer speichern

Erstellen über die Befehlszeile (auf einem Mac)Building via the Command Line (On Mac)

In einigen Fällen, wie z.B. in einer CI-Umgebung, ist es möglicherweise notwendig, die IPA-Datei über die Befehlszeile zu erstellen.In certain cases, such as in a CI environment, it may be necessary to build you IPA via the command line. Führenden Sie dazu die folgenden Schritte aus:Follow the steps below to achieve this:

  1. Achten Sie darauf, dass Projektoptionen > iOS IPA-Optionen > Include iTunesArtwork images (iTunesArtwork-Bilder einbeziehen) und Ad-hoc-/Enterprise-Paket erstellen (IPA) aktiviert sind:Ensure Project Options > iOS IPA Options > Include iTunesArtwork images is checked and Build ad-hoc/enterprise package (IPA) is checked:

    „Include iTunesArtwork images“ (Umfasst iTunesArtwork-Bilder) und „Ad-hoc-/Enterprise-Paket erstellen (IPA)“ sind aktiviert

    Wenn Sie möchten, können Sie auch stattdessen die CSPROJ-Datei im Text-Editor bearbeiten und manuell zwei entsprechende Eigenschaften in der PropertyGroup für die Konfiguration hinzufügen, die beim Erstellen der App verwendet wird.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. Wenn Sie eine optionale iTunesMetadata.plist-Datei einbeziehen, klicken Sie auf die Schaltfläche ... , wählen Sie sie aus der Liste aus, und klicken Sie anschließend auf OK.If you are including an optional iTunesMetadata.plist file, click the ... button, select it from the list and click the OK button:

    „iTunesMetadata.plist“ aus der Liste auswählen

  3. Rufen Sie msbuild direkt auf, und übergeben Sie diese Eigenschaft auf der Befehlszeile: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
    

Anpassen des IPA-SpeicherortsCustomizing the IPA Location

Eine neue MSBuild-Eigenschaft IpaPackageDir wurde hinzugefügt, um das Anpassen des Ausgabespeicherorts der IPA-Datei zu vereinfachen.A new MSBuild property IpaPackageDir has been added to make it easy to customize the .ipa file output location. Wenn für einen benutzerdefinierten Speicherort IpaPackageDir festgelegt ist, wird die IPA-Datei an diesem Speicherort anstatt im Standardunterverzeichnis mit Zeitstempel abgelegt.If IpaPackageDir is set to a custom location, the .ipa file will be placed in that location instead of the default timestamped subdirectory. Dies kann beim Erstellen von automatisierten Builds nützlich sein, die für eine korrekte Ausführung einen bestimmten Verzeichnispfad benötigen, wie beispielsweise für fortlaufende Integrationsbuilds (CI, Continuous Integration).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.

Die neue Eigenschaft kann auf unterschiedliche Weise verwendet werden:There are several possible ways to use the new property:

Für eine Ausgabe der IPA-Datei in das frühere Standardverzeichnis (wie in Xamarin.iOS 9.6 und früher) können Sie die IpaPackageDir-Eigenschaft z.B. mit einer der folgenden Methoden auf $(OutputPath) festlegen.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. Beide Methoden sind mit allen Unified API-Xamarin.iOS-Builds kompatibel. Hierzu zählen sowohl IDE-Builds als auch Befehlszeilenbuilds, die msbuild, xbuild oder mdtool verwenden: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:

  • Die erste Möglichkeit besteht darin, die IpaPackageDir-Eigenschaft in einem <PropertyGroup>-Element in einer MSBuild-Datei festzulegen.The first option is to set the IpaPackageDir property within a <PropertyGroup> element in an MSBuild file. Sie könnten z.B. die folgende <PropertyGroup> am Ende der iOS-App-Projektdatei CSPROJ hinzufügen (unmittelbar vor dem </Project>-Endtag):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>
    
  • Eine bessere Möglichkeit ist das Hinzufügen eines <IpaPackageDir>-Elements am Ende der vorhandenen <PropertyGroup>, die der beim Erstellen der IPA-Datei verwendeten Konfiguration entspricht.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. Der Vorteil dieser Möglichkeit ist, dass das Projekt hier für die Kompatibilität mit einer zukünftigen Einstellung auf der Projekteigenschaftenseite der iOS-IPA-Optionen vorbereitet wird.This is better because it will prepare the project for future compatibility with a planned setting on the iOS IPA Options project properties page. Wenn Sie derzeit die Konfiguration Release|iPhone zum Erstellen der IPA-Datei verwenden, könnte die vollständige aktualisierte Eigenschaftengruppe etwa folgendermaßen aussehen: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>
    

Eine alternative Methode für msbuild- oder xbuild-Befehlszeilenbuilds ist das Hinzufügen eines /p:-Arguments, um die IpaPackageDir-Eigenschaft festzulegen.An alternate technique for msbuild or xbuild command-line builds is to add a /p: argument to set the IpaPackageDir property. Beachten Sie, dass msbuild in diesem Fall $()-Ausdrücke nicht erweitert, die in der Befehlszeile übergeben werden. Daher kann die $(OutputPath)-Syntax nicht verwendet werden.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. Geben Sie stattdessen einen vollständigen Pfadnamen an.You must instead provide a full path name. Obwohl der Mono-Befehl xbuild$()-Ausdrücke erweitert, sollten Sie dennoch einen vollständigen Pfadnamen verwenden, da xbuild als veraltet gekennzeichnet wurde und von der plattformübergreifenden msbuild-Version abgelöst wurde.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.

Ein vollständiges Beispiel mit dieser Methode könnte unter Windows etwa folgendermaßen aussehen: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

Unter Mac könnte es folgendermaßen aussehen:Or the following on Mac:

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

Installieren einer IPA-Datei mit iTunesInstalling an IPA using iTunes

Das entstehende IPA-Paket kann Ihren Testbenutzern zur Installation auf deren iOS-Geräten übergeben oder für die Unternehmensbereitstellung ausgeliefert werden.The resulting IPA Package can be delivered to your test users for installing on their iOS devices or shipped for Enterprise deployment. Unabhängig von der ausgewählten Methode installiert der Benutzer das Paket in seiner iTunes-Anwendung auf seinem Mac oder Windows-PC, indem er auf die IPA-Datei doppelklickt oder sie in das geöffnete iTunes-Fenster zieht.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).

Die neue iOS-Anwendung wird im Bereich Meine Apps angezeigt. Dort können Sie auf sie rechtsklicken und so weitere Informationen enthalten.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:

Der Benutzer kann jetzt iTunes mit seinem Gerät synchronisieren, um die neue iOS-Anwendung zu installieren.The user can now sync iTunes with their device to install the new iOS application.

ZusammenfassungSummary

In diesem Artikel werden die Vorbereitungen besprochen, die nötig sind, um eine Xamarin.iOS-Anwendung auf einen Build außerhalb des App Stores vorzubereiten.This article covered the setup required to prepare a Xamarin.iOS application for a non-App Store build. Es wurde gezeigt, wie Sie ein IPA-Paket erstellen, und wie Sie die entstehende iOS-Anwendung auf einem iOS-Gerät eines Benutzers zu Testzwecken und für die interne Verteilung installieren.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.