Dezvoltați și distribuiți aplicații iOS fără Mac cu Flutter
Publicat: 2019-08-23Notă de la editor: La Miquido, sprijinim comunitatea iubitorilor de Flutter și suntem întotdeauna bucuroși să contribuim la schimbul de cunoștințe în rețeaua Flutter. Astăzi, vă prezentăm articolul invitat de Codemagic, care a abordat subiectul dezvoltării aplicației iOS cu Flutter și... fără dispozitiv macOS. Bucurați-vă de fiecare bucată din ea!
De cele mai multe ori, aplicațiile iOS sunt dezvoltate și distribuite de pe mașini macOS. Este greu de imaginat dezvoltarea de aplicații pentru platforma iOS fără macOS. Cu toate acestea, cu combinația dintre Flutter și Codemagic, puteți dezvolta și distribui aplicații iOS fără a utiliza macOS. În postarea noastră anterioară, am explicat procesul de semnare a codului aplicațiilor iOS fără un Mac. În această postare, vom acoperi în detaliu procesul de dezvoltare a aplicațiilor Flutter pe Linux și utilizarea semnării codurilor personalizate/manuale cu Codemagic pentru a avea control deplin asupra semnării aplicației pe exemplul aplicației Comagic-Demo.
Dezvoltarea aplicațiilor Flutter pe Linux
Flutter este un cadru de dezvoltare a aplicațiilor mobile multiplatformă care permite dezvoltarea aplicațiilor iOS și Android din același cod sursă. Cu toate acestea, cadrele native ale Apple utilizate pentru dezvoltarea aplicațiilor iOS nu se pot compila pe alte platforme precum Linux sau Windows. Componentele native iOS necesită un macOS sau Darwin pentru dezvoltarea și distribuirea aplicațiilor iOS. Cu toate acestea, tehnologii precum Flutter ne permit să dezvoltăm aplicații cross-platform pe Linux sau Windows și apoi putem distribui aplicațiile în Google Play Store sau Apple App Store folosind soluția Codemagic CI/CD.
Obținerea unei aplicații Flutter pe Linux
Aplicațiile Android pot fi construite, testate și publicate de pe platforma Linux. Putem profita de această caracteristică Android pentru a activa dezvoltarea aplicației Flutter pe Linux. Aplicația noastră Flutter se numește Comagic-Demo. Vom folosi acea aplicație pentru a arăta cum să construim pentru Android și iOS pe Linux. Cu toate acestea, rețineți că putem dezvolta doar împotriva Android pe Linux, nu iOS. Vom primi în continuare aplicația iOS care poate fi implementată în App Store în timp ce dezvoltăm aplicația Android pe Linux. Putem aduce Comagic-Demo-ul nostru pe Linux folosind diferite moduri.
Obțineți o mașină Linux
Dacă aveți deja un computer cu Linux instalat, atunci întregul proces este ușor. Trebuie doar să instalați Android SDK și Flutter pe mașina Linux. Odată ce clonăm aplicația Comagic-Demo, putem începe imediat să lucrăm la ea.
Creați containere Docker
O altă modalitate de a obține o aplicație Flutter pe Linux este utilizarea Docker. Dacă sunteți familiarizat cu ecosistemul Docker, atunci puteți crea un Dockerfile care are instalate Android SDK și Flutter. Există multe fișiere Android Dockerfile pe Dockerhub, trebuie doar să extindem acele imagini cu Flutter SDK. Să creăm un Dockerfile simplu care extinde aici o imagine Android docker exemplu pentru a introduce mediul Android și Flutter în containerul Docker. Dockerfile ar trebui să copieze aplicația în container și să ruleze mediul Flutter Android. Exemplul Dockerfile pentru Comagic-Demo va arăta astfel:
DE LA runmymind/docker-android-sdk RUN mkdir /codemagic-demo WORKDIR /codemagic-demo ADĂUGA . /codemagic-demo RUN apt-get update && \ apt-get install -y lcov git-core curl unzip && \ clona git https://github.com/flutter/flutter.git && \ /flutter/bin/flutter doctor && \ apt-get remove -y curl dezarhivare && \ apt autoremove -y && \ rm -rf /var/lib/apt/lists/* ENV PATH $ PATH:/flutter/bin/cache/dart-sdk/bin:/flutter/bin RUN flutter doctor
Acest fragment de cod are doar scop ilustrativ, dar puteți personaliza fișierul Dockerfile în funcție de nevoile dvs. Odată ce ați instalat Dockerfile și Docker, puteți obține aplicația Codemagic folosind Docker.
$ docker build -t codemagic-demo . $ docker run --name codemagic-demo
Odată ce rulăm aceste comenzi, vom avea containerul Docker care rulează cu mediul Flutter.
Dockerizarea aplicațiilor Futter va fi un subiect diferit și îl vom trata în detalii într-o postare viitoare.
Generarea de elemente de semnare a codului din App Store Connect
Pentru a codifica aplicațiile iOS, aveți nevoie de un cont de dezvoltator Apple, un certificat de dezvoltare și de distribuție, ID-ul aplicației și profilurile de furnizare create pentru aplicație. Am acoperit detaliile activităților de semnare a codului într-o postare anterioară. Pentru a configura semnarea manuală a codului pentru dezvoltarea sau depanarea versiunilor de aplicații iOS pe Codemagic, avem nevoie de următoarele lucruri:
- Certificat de dezvoltare sau distributie in format .P12
- Profil de furnizare descărcat din App Store Connect sau portalul Apple Developer
- Identificatorul de pachet al aplicației iOS
Putem descărca atât certificatul, cât și profilele de furnizare din secțiunile Certificate, Identificatori și Profiluri din portalul Apple Developer. în
În mod similar, putem descărca profilurile de furnizare de pe portalul pentru dezvoltatori Apple.
Avem nevoie atât de un certificat, cât și de un profil de furnizare pentru a semna codul aplicației noastre iOS pe Codemagic, așa că salvați aceste fișiere pentru a le utiliza mai târziu.
Actualizarea fișierelor de proiect Xcode
Acum, avem toate elementele de semnare a codului de pe portalul Apple Developer. Apoi, trebuie să sortăm fișierul de proiect Xcode, astfel încât să folosim semnarea manuală a codului cu echipa și profilul de furnizare corect. Putem face acest lucru folosind un script Ruby folosind Xcodeproj Gem sau putem doar modifica următoarele câmpuri din fișierul i os/YOUR_APP.xcodeproj/project.pbxproj .

- DevelopmentTeam = YOUR_DEVELOPMENT_TEAM_ID
- ProvisioningStyle = Manual
- PROVISIONING_PROFILE_SPECIFICER = NAME_OF_YOUR_PROVISIONING_PROFILE
În aplicația noastră Codemagic-Demo, trebuie să edităm fișierul proiectului Xcode aici pe GitHub. Trebuie să ne asigurăm că facem aceste modificări pentru configurația de depanare pentru build-urile interne și pentru configurația de lansare pentru build-urile App Store. Odată ce setăm valorile în project.pbxproj, suntem gata să implementăm aplicația iOS din Codemagic fără probleme.
Configurarea semnării manuale a codului în Codemagic
Când dezvoltăm pe Linux, putem vedea doar starea aplicației Android, deoarece instrumentele Xcode și iOS nu pot fi instalate sau rulate pe Linux. Există unele eforturi în desfășurare pentru a aduce instrumentele Swift și iOS pe Linux, dar va dura mult timp. Când suntem gata să distribuim aplicațiile, putem configura cu ușurință CI/CD pentru aplicație folosind Codemagic, consultați Ghidul de început aici. OnCodemagic, putem activa semnarea codului iOS din secțiunea Publicare prin încărcarea certificatului și a profilului de furnizare pe care le-am descărcat de pe portalul Apple Developer. În aplicația Codemagic, navigați la Setări → Publicare → Semnarea codului iOS → Manual și încărcați-vă certificatul și profilul de furnizare acolo.
Când rulați acum compilarea, veți obține aplicația iOS sub forma fișierului IPA care poate fi implementat pe dispozitivele furnizate. Lista artefactelor de construcție pe Codemagic va arăta astfel:
După cum se poate vedea în secțiunea Artefacte , avem codemagic_demo.ipa , precum și fișiere dSYMs pentru rapoartele de blocare. Putem instala această aplicație pe orice dispozitiv iOS care a fost adăugat la profilul de furnizare și putem testa aplicația noastră iOS. Dacă vedem erori acolo, putem oricând să revenim la mediul Linux și să remediem acele erori.
Distribuirea aplicației iOS în App Store
De acum, am creat versiunea de depanare a aplicației iOS pentru testare intern. Într-un mod similar, putem distribui aplicația iOS în App Store. Când suntem gata să implementăm aplicația în App Store, trebuie să construim aplicația în modul Release . O putem face folosind certificatul de distribuție și profilul de furnizare a producției. Putem genera certificatul și profilele într-un mod similar. Dar trebuie să ne asigurăm că alegem distribuția App Store în timp ce creăm profilul de furnizare.
Profilul de furnizare de distribuție va rula aplicația iOS pe orice dispozitiv și nu este nevoie să adăugăm dispozitivele în mod explicit în profilul de furnizare. Profilul de furnizare a App Store va arăta astfel:
Odată ce avem la îndemână certificatul de distribuție iOS și profilul de furnizare a producției , putem selecta modul de lansare în Construiți secțiunea în Codemagic, așa cum se arată mai jos.
De asemenea, am setat argumentele de compilare să fie lansate în loc de depanare. În secțiunea Publicare, trebuie să încărcăm certificatul de distribuție și profilul de furnizare a producției pentru a genera versiunea App Store a aplicației.
Odată ce Codemagic generează artefactele de construcție, putem construi în App Store Connect, cunoscut anterior ca iTunesConnect, urmând instrucțiunile App Store și trimitem aplicația pentru examinare.
Concluzie
Cu combinația dintre un cadru de dezvoltare a aplicațiilor mobile pe mai multe platforme și o soluție magică CI/CD precum Codemagic, deținerea unui Mac pentru dezvoltarea de aplicații iOS nu este deloc obligatorie. Pot exista unele probleme în depanarea aplicației în timpul dezvoltării pentru iOS, dar este complet posibil să dezvoltați și să publicați aplicații iOS în App Store folosind combinația Flutter și Codemagic.
Doriți să construiți o aplicație de viitor pentru afacerea dvs.?
Hai să lucrăm împreuna