Développez et distribuez des applications iOS sans Mac avec Flutter
Publié: 2019-08-23Note de l'éditeur : Chez Miquido, nous soutenons la communauté des amoureux de Flutter et nous sommes toujours heureux de contribuer au partage des connaissances sur le réseau Flutter. Aujourd'hui, nous présentons l'article invité de Codemagic, qui a abordé le sujet du développement d'applications iOS avec Flutter et… sans appareil macOS. Profitez de chaque morceau!
La plupart du temps, les applications iOS sont développées et distribuées à partir de machines macOS. Il est difficile d'imaginer développer des applications pour la plate-forme iOS sans macOS. Cependant, avec la combinaison de Flutter et Codemagic, vous pouvez développer et distribuer des applications iOS sans utiliser macOS. Dans notre article précédent, nous avons expliqué le processus de signature de code des applications iOS sans Mac. Dans cet article, nous couvrirons en détail le processus de développement d'applications Flutter sur Linux et l'utilisation de la signature de code personnalisée/manuelle avec Codemagic pour avoir un contrôle total sur la signature d'applications sur l'exemple de l'application Comagic-Demo.
Développer des applications Flutter sous Linux
Flutter est un cadre de développement d'applications mobiles multiplateforme qui permet de développer des applications iOS et Android à partir du même code source. Cependant, les frameworks natifs d'Apple utilisés pour développer des applications iOS ne peuvent pas être compilés sur d'autres plates-formes telles que Linux ou Windows. Les composants iOS natifs nécessitent un macOS ou Darwin pour développer et distribuer des applications iOS. Cependant, des technologies comme Flutter nous permettent de développer des applications multiplateformes sur Linux ou Windows et nous pouvons ensuite distribuer les applications sur Google Play Store ou Apple App Store en utilisant la solution Codemagic CI/CD.
Obtenir une application Flutter sous Linux
Les applications Android peuvent être créées, testées et publiées à partir de la plate-forme Linux. Nous pouvons profiter de cette fonctionnalité Android pour permettre le développement d'applications Flutter sur Linux. Notre application Flutter s'appelle Comagic-Demo. Nous utiliserons cette application pour montrer comment créer pour Android et iOS sous Linux. Cependant, gardez à l'esprit que nous ne pouvons développer que sur Android sur Linux et non sur iOS. Nous aurons toujours une application iOS qui peut être déployée sur l'App Store tout en développant une application Android sur Linux. Nous pouvons obtenir notre Comagic-Demo sur Linux de différentes manières.
Obtenir une machine Linux
Si vous avez déjà un ordinateur sur lequel Linux est installé, l'ensemble du processus est simple. Il vous suffit d'installer Android SDK et Flutter sur la machine Linux. Une fois que nous avons cloné l'application Comagic-Demo, nous pouvons commencer à travailler dessus immédiatement.
Créer des conteneurs Docker
Une autre façon d'obtenir une application Flutter sur Linux consiste à utiliser Docker. Si vous connaissez l'écosystème Docker, vous pouvez créer un Dockerfile sur lequel Android SDK et Flutter sont installés. Il existe de nombreux Dockerfiles Android sur Dockerhub, nous avons juste besoin d'étendre ces images avec Flutter SDK. Créons ici un simple Dockerfile étendant un exemple d'image de docker Android pour obtenir l'environnement Android et Flutter dans le conteneur Docker. Le Dockerfile doit copier l'application dans le conteneur et exécuter l'environnement Flutter Android. L'exemple Dockerfile pour Comagic-Demo ressemblera à ceci :
DE runmymind/docker-android-sdk EXÉCUTER mkdir /codemagic-demo WORKDIR /codemagic-démo AJOUTER . /démo-codemagic RUN apt-get update && \ apt-get install -y lcov git-core curl décompresser && \ git clone https://github.com/flutter/flutter.git && \ /scintillement/bin/scintillement docteur && \ apt-get remove -y curl décompresser && \ apt suppression automatique -y && \ rm -rf /var/lib/apt/lists/* ENV CHEMIN $ CHEMIN :/flutter/bin/cache/dart-sdk/bin:/flutter/bin RUN flutter docteur
Cet extrait de code est uniquement à des fins d'illustration, mais vous pouvez personnaliser le Dockerfile selon vos besoins. Une fois que vous avez installé Dockerfile et Docker, vous pouvez obtenir l'application Codemagic à l'aide de Docker.
$ docker build -t codemagic-demo . $ docker run --name codemagic-demo
Une fois ces commandes exécutées, le conteneur Docker fonctionnera avec l'environnement Flutter.
Les applications Dockerising Futter seront un sujet différent et nous le couvrirons en détail dans un prochain article.
Génération d'actifs de signature de code à partir d'App Store Connect
Pour coder les applications iOS, vous avez besoin d'un compte de développeur Apple, d'un certificat de développement et de distribution, de votre ID d'application et des profils d'approvisionnement créés pour l'application. Nous avons couvert les détails des activités de signature de code dans un article précédent. Afin de configurer la signature manuelle du code pour le développement ou le débogage des versions d'applications iOS sur Codemagic, nous avons besoin des éléments suivants :
- Certificat de développement ou de distribution au format .P12
- Profil d'approvisionnement téléchargé depuis App Store Connect ou le portail des développeurs Apple
- Identifiant de bundle de l'application iOS
Nous pouvons télécharger à la fois le certificat et les profils d'approvisionnement à partir des sections Certificats, Identifiants et Profils du portail Apple Developer. dans
De même, nous pouvons télécharger les profils d'approvisionnement à partir du portail des développeurs Apple.
Nous avons besoin à la fois d'un certificat et d'un profil d'approvisionnement pour signer le code de notre application iOS sur Codemagic, alors enregistrez ces fichiers pour les utiliser plus tard.
Mise à jour des fichiers de projet Xcode
Maintenant, nous avons tous les actifs de signature de code du portail Apple Developer. Ensuite, nous devons trier le fichier de projet Xcode afin d'utiliser la signature de code manuelle avec l'équipe et le profil d'approvisionnement appropriés. Nous pouvons le faire en utilisant un script Ruby en utilisant Xcodeproj Gem ou nous pouvons simplement modifier les champs suivants dans le fichier i os/YOUR_APP.xcodeproj/project.pbxproj .

- DevelopmentTeam = VOTRE_DEVELOPMENT_TEAM_ID
- ProvisioningStyle = Manuel
- PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE
Dans notre application Codemagic-Demo, nous devons modifier le fichier de projet Xcode ici sur GitHub. Nous devons nous assurer d'apporter ces modifications à la configuration de débogage pour les versions internes et à la configuration de publication pour les versions de l'App Store. Une fois que nous avons défini les valeurs dans project.pbxproj, nous sommes prêts à déployer l'application iOS à partir de Codemagic sans aucun problème.
Configuration de la signature manuelle du code dans Codemagic
Lors du développement sur Linux, nous ne pouvons voir que l'état de l'application Android car les outils Xcode et iOS ne peuvent pas être installés ou exécutés sur Linux. Des efforts sont en cours pour apporter les outils Swift et iOS sur Linux, mais cela prendra beaucoup de temps. Lorsque nous sommes prêts à distribuer les applications, nous pouvons facilement configurer CI/CD pour l'application à l'aide de Codemagic, voir le Guide de démarrage ici. SurCodemagic, nous pouvons activer la signature de code iOS à partir de la section Publier en téléchargeant le certificat et le profil d'approvisionnement que nous avons téléchargés à partir du portail Apple Developer. Dans l'application Codemagic, accédez à Paramètres → Publier → Signature de code iOS → Manuel et chargez-y votre certificat et votre profil d'approvisionnement.
Lorsque vous exécutez maintenant la construction, vous obtiendrez l'application iOS sous la forme du fichier IPA qui peut être déployé sur les appareils provisionnés. La liste des artefacts de build sur Codemagic ressemblera à ceci :
Comme on peut le voir dans la section Artefacts , nous avons obtenu codemagic_demo.ipa ainsi que des fichiers dSYMs pour les rapports de plantage. Nous pouvons installer cette application sur n'importe quel appareil iOS qui a été ajouté au profil d'approvisionnement et tester notre application iOS. Si nous y voyons des bogues, nous pouvons toujours revenir à l'environnement Linux et corriger ces bogues.
Distribution de l'application iOS sur l'App Store
À partir de maintenant, nous avons construit la version de débogage de l'application iOS pour les tests en interne. De la même manière, nous pouvons distribuer l'application iOS sur l'App Store. Lorsque nous sommes prêts à déployer l'application sur l'App Store, nous devons créer l'application en mode Release . Nous pouvons le faire en utilisant le certificat de distribution et le profil d'approvisionnement de production. Nous pouvons générer le certificat et les profils de la même manière. Mais nous devons nous assurer de choisir la distribution App Store lors de la création du profil d'approvisionnement.
Le profil d'approvisionnement de distribution exécutera l'application iOS sur n'importe quel appareil et nous n'avons pas besoin d'ajouter explicitement les appareils dans le profil d'approvisionnement. Le profil d'approvisionnement de l'App Store ressemblera à ceci :
Une fois que nous avons le certificat de distribution iOS et le profil de provisionnement de production à portée de main, nous pouvons sélectionner le mode Release dans le Construisez la section dans Codemagic comme indiqué ci-dessous.
Nous avons également défini les arguments de construction sur release au lieu de debug. Dans la section Publier, nous devons télécharger le certificat de distribution et le profil d'approvisionnement de production pour générer la version App Store de l'application.
Une fois que Codemagic a généré les artefacts de construction, nous pouvons la construire sur App Store Connect, anciennement connu sous le nom d'iTunesConnect, en suivant les directives de l'App Store et soumettre l'application pour examen.
Conclusion
Avec la combinaison d'un cadre de développement d'applications mobiles multiplateforme et d'une solution CI/CD magique comme Codemagic, posséder un Mac pour le développement d'applications iOS n'est pas du tout obligatoire. Il peut y avoir des problèmes de débogage de l'application lors du développement pour iOS, mais il est tout à fait possible de développer et de publier des applications iOS sur l'App Store en utilisant la combinaison de Flutter et Codemagic.
Vous souhaitez créer une application évolutive pour votre entreprise ?
Travaillons ensemble