IPA-Unterstützung 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.

Sie können eine Anwendung im iTunes App Store nicht nur für den Verkauf veröffentlichen, sondern auch für folgende Aktionen bereitstellen:

  • 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. 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.
  • In House / Enterprise Deployment – Eine iOS-Anwendung kann intern innerhalb eines Unternehmens bereitgestellt werden, das die Mitgliedschaft des Apple Developer Enterprise Programms erfordert. Weitere Informationen zur internen Verteilung finden Sie im Leitfaden zur internen Verteilung.

In beiden Fällen muss ein IPA-Paket erstellt und digital mit dem richtigen Verteilungsbereitstellungsprofil signiert werden. 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.

Die „iTunesMetadata.plist“-Datei

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.

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. Standardmäßig wird eine kleine „iTunesMetadata.plist“-Datei immer dann erstellt, wenn Sie ein Projekt erstellen. Sie wird im Projektverzeichnis gespeichert.

Sie können auch eine benutzerdefinierte iTunesMetadata.plist-Datei erstellen, um die Zusatzinformationen für eine Verteilung bereitzustellen. 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).

iTunes-Grafik

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.

Um die iTunes-Grafik festzulegen, führen Sie Folgendes aus:

  1. Doppelklicken Sie auf die info.plist-Datei im Projektmappen-Explorer, um sie zu öffnen und zu bearbeiten.
  2. Scrollen Sie zum Bereich iTunes Artwork (iTunes-Grafik) im 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.
  4. Wiederholen Sie diesen Schritt, bis alle benötigten Bilder für Ihre Anwendung angegebene wurden.

Sehen Sie sich die Dokumentation zu iTunes-Grafik an, um weitere Details zu erhalten.

Erstellen einer IPA-Datei

Das Erstellen einer IPA-Datei ist nun in den neuen Veröffentlichungsworkflow integriert. Folgen Sie dazu den unten stehenden Anweisungen, um Ihre App zu archivieren, sie zu signieren und Ihre IPA-Datei zu speichern.

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:

Selected the iOS project as the startup project

Erstellen des Archivs

Um eine IPA-Datei erstellen zu können, müssen Sie ein Archiv eines Releasebuilds der Anwendung erstellen. Dieses Archiv enthält die App und deren identifizierenden Informationen.

  1. Wählen Sie die version | Gerätekonfiguration in Visual Studio für Mac: !

    Select the Release | Device configuration

  2. Wählen Sie aus dem Build-Menü die Option Zur Veröffentlichung aktivieren:

    Select Archive for Publishing

  3. Sobald das Archiv erstellt wurde, wird die Archivansicht angezeigt:

    The Archives view will be displayed

Signieren und Verteilen Ihrer App

Beim Erstellen Ihrer Anwendung für das Archiv wird automatisch die Archivansicht geöffnet. Darin werden alle archivierten Projekte nach Projektmappe gruppiert angezeigt. Standardmäßig wird in dieser Ansicht nur die aktuelle geöffnete Projektmappe angezeigt. Klicken Sie auf Alle Archive anzeigen, um alle Projektmappen mit Archiven anzuzeigen.

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.

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.

Gehen Sie folgendermaßen vor, um Ihre App für die Verteilung zu signieren und vorzubereiten:

  1. Klicken Sie wie unten dargestellt auf die Schaltfläche Signieren und verteilen... :

    Select Sign and Distribute...

  2. Dadurch wird der Veröffentlichungs-Assistent geöffnet. 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

  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:

    Select the signing identity and corresponding provisioning profile

  4. Überprüfen Sie die Details Ihres Pakets, und klicken Sie auf Veröffentlichen:

    Verify the package details

  5. Speichern Sie als Letztes die IPA-Datei auf Ihrem Computer:

    Save the IPA to the computer

Erstellen über die Befehlszeile (auf einem 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. Führenden Sie dazu die folgenden Schritte aus:

  1. Stellen Sie sicher, dass Project Optionen für iOS IPA-Optionen >> iTunesArtwork-Bilder aktiviert sind und das Build-Ad-hoc/Enterprise-Paket (IPA) aktiviert ist:

    Include iTunesArtwork images and Build ad-hoc/enterprise package IPA is checked

    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.

    <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.

    Select iTunesMetadata.plist from the list

  3. Rufen Sie msbuild direkt auf, und übergeben Sie diese Eigenschaft auf der Befehlszeile:

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

Anpassen des IPA-Speicherorts

Eine neue MSBuild-Eigenschaft IpaPackageDir wurde hinzugefügt, um das Anpassen des Ausgabespeicherorts der IPA-Datei zu vereinfachen. Wenn für einen benutzerdefinierten Speicherort IpaPackageDir festgelegt ist, wird die IPA-Datei an diesem Speicherort anstatt im Standardunterverzeichnis mit Zeitstempel abgelegt. 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).

Die neue Eigenschaft kann auf unterschiedliche Weise verwendet werden:

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. 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:

  • Die erste Möglichkeit besteht darin, die IpaPackageDir-Eigenschaft in einem <PropertyGroup>-Element in einer MSBuild-Datei festzulegen. Sie könnten z.B. die folgende <PropertyGroup> am Ende der iOS-App-Projektdatei CSPROJ hinzufügen (unmittelbar vor dem </Project>-Endtag):

    <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. 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. Wenn Sie derzeit die Konfiguration Release|iPhone zum Erstellen der IPA-Datei verwenden, könnte die vollständige aktualisierte Eigenschaftengruppe etwa folgendermaßen aussehen:

    <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. 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. Geben Sie stattdessen einen vollständigen Pfadnamen an. 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.

Ein vollständiges Beispiel mit dieser Methode könnte unter Windows etwa folgendermaßen aussehen:

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:

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

Installieren einer IPA-Datei mit iTunes

Das entstehende IPA-Paket kann Ihren Testbenutzern zur Installation auf deren iOS-Geräten übergeben oder für die Unternehmensbereitstellung ausgeliefert werden. 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.

Die neue iOS-Anwendung wird im Bereich Meine Apps angezeigt. Dort können Sie auf sie rechtsklicken und so weitere Informationen enthalten.

Der Benutzer kann jetzt iTunes mit seinem Gerät synchronisieren, um die neue iOS-Anwendung zu installieren.

Zusammenfassung

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. 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.