Entwickeln und verteilen Sie iOS-Apps ohne Mac mit Flutter

Veröffentlicht: 2019-08-23

Anmerkung des Herausgebers: Bei Miquido unterstützen wir die Gemeinschaft der Flutter-Liebhaber und wir freuen uns immer, zum Wissensaustausch im gesamten Flutter-Netzwerk beizutragen. Heute präsentieren wir den Gastbeitrag von Codemagic, der das Thema der Entwicklung von iOS-Apps mit Flutter und… ohne macOS-Gerät auf den Punkt gebracht hat. Genießen Sie jedes Stück davon!


Meistens werden iOS-Apps von macOS-Rechnern entwickelt und vertrieben. Es ist schwer vorstellbar, Apps für die iOS-Plattform ohne macOS zu entwickeln. Mit der Kombination von Flutter und Codemagic können Sie jedoch iOS-Apps entwickeln und verteilen, ohne macOS zu verwenden. In unserem vorherigen Beitrag haben wir den Prozess der Code-Signierung von iOS-Apps ohne Mac erklärt. In diesem Beitrag werden wir den Prozess der Entwicklung von Flutter-Apps unter Linux und die Verwendung von benutzerdefinierter/manueller Code-Signierung mit Codemagic ausführlich behandeln, um die volle Kontrolle über die App-Signierung am Beispiel der Comagic-Demo-App zu haben.

Entwicklung von Flutter-Apps unter Linux

Flutter ist ein plattformübergreifendes Entwicklungsframework für mobile Anwendungen, mit dem iOS- und Android-Apps aus demselben Quellcode entwickelt werden können. Die nativen Frameworks von Apple, die für die Entwicklung von iOS-Apps verwendet werden, können jedoch nicht auf anderen Plattformen wie Linux oder Windows kompiliert werden. Die nativen iOS-Komponenten erfordern ein macOS oder Darwin zum Entwickeln und Verteilen von iOS-Apps. Technologien wie Flutter ermöglichen es uns jedoch, plattformübergreifende Apps unter Linux oder Windows zu entwickeln, und wir können die Apps dann mithilfe der Codemagic CI/CD-Lösung an den Google Play Store oder den Apple App Store verteilen.

Holen Sie sich eine Flutter-App unter Linux

Android-Apps können von der Linux-Plattform aus erstellt, getestet und veröffentlicht werden. Wir können diese Android-Funktion nutzen, um die Flutter-App-Entwicklung unter Linux zu ermöglichen. Unsere Flutter-App heißt Comagic-Demo. Wir werden diese App verwenden, um zu zeigen, wie man für Android und iOS unter Linux erstellt. Beachten Sie jedoch, dass wir nur gegen Android unter Linux entwickeln können, nicht gegen iOS. Wir werden weiterhin eine iOS-App erhalten, die im App Store bereitgestellt werden kann, während wir eine Android-App unter Linux entwickeln. Wir können unsere Comagic-Demo auf verschiedenen Wegen nach Linux bringen.

Holen Sie sich eine Linux-Maschine

Wenn Sie bereits einen Computer mit installiertem Linux haben, ist der gesamte Vorgang einfach. Sie müssen nur Android SDK und Flutter auf dem Linux-Computer installieren. Sobald wir die Comagic-Demo-App geklont haben, können wir sofort damit beginnen, daran zu arbeiten.

Erstellen Sie Docker-Container

Eine andere Möglichkeit, eine Flutter-App unter Linux zu erhalten, ist die Verwendung von Docker. Wenn Sie mit dem Docker-Ökosystem vertraut sind, können Sie eine Docker-Datei erstellen, in der Android SDK und Flutter installiert sind. Es gibt viele Android Dockerfiles auf Dockerhub, wir müssen diese Images nur mit Flutter SDK erweitern. Lassen Sie uns hier eine einfache Dockerdatei erstellen, die ein Beispiel-Android-Docker-Image erweitert, um die Android- und Flutter-Umgebung in den Docker-Container zu bringen. Das Dockerfile sollte die App in den Container kopieren und die Flutter-Android-Umgebung ausführen. Das Beispiel-Dockerfile für Comagic-Demo sieht folgendermaßen aus:

 VON runmymind/docker-android-sdk
Führen Sie mkdir /codemagic-demo aus
ARBEITSVERZ /codemagic-demo
HINZUFÜGEN . /codemagic-demo
RUN apt-get update && \
    apt-get install -y lcov git-core curl entpacken && \
    Git-Klon https://github.com/flutter/flutter.git && \
    /flutter/bin/flutter doktor && \
    apt-get entfernen -y curl entpacken && \
    apt autoremove -y && \
    rm -rf /var/lib/apt/lists/*
ENV PATH $ PATH:/flutter/bin/cache/dart-sdk/bin:/flutter/bin
RUN Flatterdoktor

Dieses Code-Snippet dient nur zu Illustrationszwecken, aber Sie können das Dockerfile nach Ihren Bedürfnissen anpassen. Sobald Sie das Dockerfile und Docker installiert haben, können Sie die Codemagic-App mit Docker herunterladen.

 $ docker build -t codemagic-demo .
$ docker run --name codemagic-demo

Sobald wir diese Befehle ausführen, wird der Docker-Container mit der Flutter-Umgebung ausgeführt.

Das Dockerisieren von Futter-Apps wird ein anderes Thema sein, und wir werden es in einem zukünftigen Beitrag ausführlich behandeln.

Generieren von Codesignatur-Assets aus App Store Connect

Um iOS-Apps zu signieren, benötigen Sie ein Apple-Entwicklerkonto, ein Entwicklungs- und ein Vertriebszertifikat, Ihre App-ID und für die App erstellte Bereitstellungsprofile. Wir haben die Details der Code-Signing-Aktivitäten in einem früheren Beitrag behandelt. Um die manuelle Codesignierung für die Entwicklung oder das Debuggen von Builds von iOS-Apps auf Codemagic zu konfigurieren, benötigen wir folgende Dinge:

  • Entwicklungs- oder Vertriebszertifikat im .P12-Format
  • Heruntergeladenes Bereitstellungsprofil von App Store Connect oder Apple Developer Portal
  • Bundle-ID der iOS-App

Wir können sowohl das Zertifikat als auch die Bereitstellungsprofile aus den Abschnitten Certificates, Identifiers and Profiles im Apple Developer Portal herunterladen. in

Laden Sie die Bereitstellungsprofile aus dem iOS-Entwicklerportal herunter

Ebenso können wir die Bereitstellungsprofile vom Apple-Entwicklerportal herunterladen.

iOS-Bereitstellungsprofile

Wir benötigen sowohl ein Zertifikat als auch ein Bereitstellungsprofil, um unsere iOS-App auf Codemagic zu signieren, also speichern Sie diese Dateien zur späteren Verwendung.

Aktualisieren von Xcode-Projektdateien

Jetzt haben wir alle Codesignatur-Assets vom Apple Developer Portal. Als Nächstes müssen wir die Xcode-Projektdatei sortieren, um die manuelle Code-Signierung mit dem richtigen Team- und Bereitstellungsprofil zu verwenden. Wir können dies tun, indem wir ein Ruby-Skript mit Xcodeproj Gem verwenden, oder wir können einfach die folgenden Felder in der Datei i os/YOUR_APP.xcodeproj/project.pbxproj ändern .

  • Entwicklungsteam = YOUR_DEVELOPMENT_TEAM_ID
  • Bereitstellungsstil = Manuell
  • PROVISIONING_PROFILE_SPECIFIER = NAME_OF_IHRES_PROVISIONING_PROFILES

In unserer Codemagic-Demo-App müssen wir die Xcode-Projektdatei hier auf GitHub bearbeiten. Wir müssen sicherstellen, dass diese Änderungen für die Debug -Konfiguration für interne Builds und für die Release -Konfiguration für App Store-Builds vorgenommen werden. Sobald wir die Werte in project.pbxproj festgelegt haben, können wir die iOS-App von Codemagic ohne Probleme bereitstellen.

Einrichten der manuellen Codesignierung in Codemagic

Bei der Entwicklung unter Linux können wir nur den Status der Android-App sehen, da Xcode und iOS-Tools nicht unter Linux installiert oder ausgeführt werden können. Es gibt einige laufende Bemühungen, Swift- und iOS-Tools auf Linux zu bringen, aber es wird viel Zeit in Anspruch nehmen. Wenn wir bereit sind, die Apps zu verteilen, können wir mit Codemagic ganz einfach CI/CD für die App einrichten, siehe den Leitfaden „Erste Schritte“ hier. Auf Codemagic können wir die iOS-Codesignatur im Abschnitt „Veröffentlichen“ aktivieren, indem wir das Zertifikat und das Bereitstellungsprofil hochladen, die wir vom Apple Developer Portal heruntergeladen haben. Navigieren Sie in der Codemagic-App zu Einstellungen → Veröffentlichen → iOS Code Signing → Manual und laden Sie dort Ihr Zertifikat und Bereitstellungsprofil hoch.

Einrichten der manuellen Codesignierung in Codemagic

Wenn Sie nun den Build ausführen, erhalten Sie die iOS-App in Form der IPA-Datei, die auf den bereitgestellten Geräten bereitgestellt werden kann. Die Liste der Build-Artefakte auf Codemagic sieht folgendermaßen aus:

Die Liste der Build-Artefakte auf Codemagic

Wie im Abschnitt Artefakte zu sehen ist, haben wir codemagic_demo.ipa sowie dSYMs-Dateien für Absturzberichte erhalten. Wir können diese App auf jedem iOS-Gerät installieren, das dem Bereitstellungsprofil hinzugefügt wurde, und unsere iOS-App testen. Wenn wir dort Fehler sehen, können wir jederzeit zur Linux-Umgebung zurückkehren und diese Fehler beheben.

Verteilen der iOS-App im App Store

Ab sofort haben wir die Debug-Version der iOS-App zum internen Testen erstellt. Auf ähnliche Weise können wir die iOS-App im App Store verteilen. Wenn wir bereit sind, die App im App Store bereitzustellen, müssen wir die App im Release- Modus erstellen. Wir können dies mithilfe des Verteilungszertifikats und des Produktionsbereitstellungsprofils tun. Wir können das Zertifikat und die Profile auf ähnliche Weise generieren. Aber wir müssen sicherstellen, dass wir beim Erstellen des Bereitstellungsprofils die App Store -Verteilung auswählen.

App Store-Verteilungsoption

Das Verteilungsbereitstellungsprofil führt die iOS-App auf jedem Gerät aus, und wir müssen die Geräte nicht explizit im Bereitstellungsprofil hinzufügen. Das App Store-Bereitstellungsprofil sieht folgendermaßen aus:

Das App Store-Bereitstellungsprofil

Sobald wir das iOS-Verteilungszertifikat und das Produktionsbereitstellungsprofil zur Hand haben, können wir den Release -Modus in der auswählen Erstellen Sie den Abschnitt in Codemagic wie unten gezeigt.

Der Release-Modus im Abschnitt „Build“ in Codemagic

Wir haben auch die Build-Argumente auf release statt debug gesetzt. Im Abschnitt „Veröffentlichen“ müssen wir das Verteilungszertifikat und das Produktionsbereitstellungsprofil hochladen, um die App Store-Version der App zu generieren.

Sobald Codemagic die Build-Artefakte generiert hat, können wir den Build mit dem App Store Connect, früher bekannt als iTunesConnect, gemäß den App Store-Richtlinien verbinden und die App zur Überprüfung einreichen.

Fazit

Mit der Kombination aus einem plattformübergreifenden Framework für die Entwicklung mobiler Anwendungen und einer magischen CI/CD-Lösung wie Codemagic ist der Besitz eines Mac für die Entwicklung von iOS-Apps überhaupt nicht zwingend erforderlich. Es kann einige Probleme beim Debuggen der App während der Entwicklung für iOS geben, aber es ist durchaus möglich, iOS-Apps mit der Kombination von Flutter und Codemagic zu entwickeln und im App Store zu veröffentlichen.

Symbol für native Apps

Möchten Sie eine zukunftssichere App für Ihr Unternehmen erstellen?

Lass uns zusammen arbeiten