Sviluppa e distribuisci app iOS senza Mac con Flutter

Pubblicato: 2019-08-23

Nota dell'editore: In Miquido, supportiamo la comunità degli amanti di Flutter e siamo sempre felici di contribuire alla condivisione delle conoscenze attraverso la rete Flutter. Oggi vi presentiamo l'articolo per gli ospiti di Codemagic, che ha inchiodato l'argomento dello sviluppo di app iOS con Flutter e... senza dispositivo macOS. Goditi ogni pezzo!


La maggior parte delle volte, le app iOS vengono sviluppate e distribuite da macchine macOS. È difficile immaginare di sviluppare app per la piattaforma iOS senza macOS. Tuttavia, con la combinazione di Flutter e Codemagic, puoi sviluppare e distribuire app iOS senza utilizzare macOS. Nel nostro post precedente, abbiamo spiegato il processo di firma del codice delle app iOS senza un Mac. In questo post, tratteremo in dettaglio il processo di sviluppo di app Flutter su Linux e l'utilizzo della firma del codice personalizzata/manuale con Codemagic per avere il pieno controllo sulla firma dell'app nell'esempio dell'app Commagic-Demo.

Sviluppo di app Flutter su Linux

Flutter è un framework di sviluppo di applicazioni mobili multipiattaforma che consente di sviluppare app iOS e Android dallo stesso codice sorgente. Tuttavia, i framework nativi di Apple utilizzati per lo sviluppo di app iOS non possono essere compilati su altre piattaforme come Linux o Windows. I componenti iOS nativi richiedono un macOS o Darwin per lo sviluppo e la distribuzione di app iOS. Tuttavia, tecnologie come Flutter ci consentono di sviluppare app multipiattaforma su Linux o Windows e possiamo quindi distribuire le app su Google Play Store o Apple App Store utilizzando la soluzione Codemagic CI/CD.

Ottenere un'app Flutter su Linux

Le app Android possono essere create, testate e pubblicate dalla piattaforma Linux. Possiamo sfruttare questa funzione Android per abilitare lo sviluppo di app Flutter su Linux. La nostra app Flutter si chiama Commagic-Demo. Useremo quell'app per mostrare come costruire per Android e iOS su Linux. Tuttavia, tieni presente che possiamo sviluppare solo contro Android su Linux non iOS. Avremo comunque app iOS che possono essere distribuite su App Store durante lo sviluppo di app Android su Linux. Possiamo portare la nostra Comgic-Demo su Linux in diversi modi.

Prendi una macchina Linux

Se hai già un computer con Linux installato, l'intero processo è semplice. Devi solo installare Android SDK e Flutter sulla macchina Linux. Una volta clonata l'app Commagic-Demo, possiamo iniziare subito a lavorarci.

Crea contenitori Docker

Un altro modo per ottenere un'app Flutter su Linux è utilizzare Docker. Se hai familiarità con l'ecosistema Docker, puoi creare un Dockerfile con Android SDK e Flutter installati. Ci sono molti Dockerfile Android su Dockerhub, dobbiamo solo estendere quelle immagini con Flutter SDK. Creiamo un semplice Dockerfile che estende un'immagine Docker Android di esempio qui per inserire l'ambiente Android e Flutter nel contenitore Docker. Il Dockerfile dovrebbe copiare l'app nel contenitore ed eseguire l'ambiente Flutter Android. Il Dockerfile di esempio per Commagic-Demo sarà simile al seguente:

 DA runmymind/docker-android-sdk
ESEGUI mkdir /codemagic-demo
WORKDIR /demo-codemagic
INSERISCI . /codemagic-demo
ESEGUI apt-get update && \
    apt-get install -y lcov git-core curl unzip && \
    git clone https://github.com/flutter/flutter.git && \
    /flutter/bin/flutter dottore && \
    apt-get remove -y curl unzip && \
    apt rimozione automatica -y && \
    rm -rf /var/lib/apt/lists/*
PERCORSO ENV $ PERCORSO:/flutter/bin/cache/dart-sdk/bin:/flutter/bin
CORRI dottore svolazzante

Questo frammento di codice è solo a scopo illustrativo, ma puoi personalizzare il Dockerfile secondo le tue esigenze. Dopo aver installato Dockerfile e Docker, puoi ottenere l'app Codemagic utilizzando Docker.

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

Una volta eseguiti questi comandi, avremo il contenitore Docker in esecuzione con l'ambiente Flutter.

Dockerizzare le app Futter sarà un argomento diverso e lo tratteremo in dettaglio in un post futuro.

Generazione di risorse per la firma del codice da App Store Connect

Per firmare in codice le app iOS, è necessario un account sviluppatore Apple, un certificato di sviluppo e distribuzione, l'ID app e i profili di provisioning creati per l'app. Abbiamo trattato i dettagli delle attività di firma del codice in un post precedente. Per configurare la firma manuale del codice per lo sviluppo o il debug di build di app iOS su Codemagic, abbiamo bisogno delle seguenti cose:

  • Certificato di sviluppo o distribuzione in formato .P12
  • Profilo di provisioning scaricato da App Store Connect o dal portale per sviluppatori Apple
  • Identificatore del pacchetto dell'app iOS

Possiamo scaricare sia il certificato che i profili di provisioning dalle sezioni Certificati, Identificatori e Profili nel portale per sviluppatori Apple. in

Scarica i profili di provisioning dal portale per sviluppatori iOS

Allo stesso modo, possiamo scaricare i profili di provisioning dal portale per sviluppatori Apple.

Profili di provisioning iOS

Abbiamo bisogno sia di un certificato che di un profilo di provisioning per firmare in codice la nostra app iOS su Codemagic, quindi salva questi file per usarli in seguito.

Aggiornamento dei file di progetto Xcode

Ora abbiamo tutte le risorse per la firma del codice dal portale degli sviluppatori Apple. Successivamente, è necessario risolvere il file di progetto Xcode in modo da utilizzare la firma manuale del codice con il team e il profilo di provisioning corretti. Possiamo farlo usando uno script Ruby usando Xcodeproj Gem oppure possiamo semplicemente cambiare i seguenti campi nel file i os/YOUR_APP.xcodeproj/project.pbxproj .

  • DevelopmentTeam = YOUR_DEVELOPMENT_TEAM_ID
  • Stile di fornitura = Manuale
  • PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE

Nella nostra app Codemagic-Demo, dobbiamo modificare il file di progetto Xcode qui su GitHub. Dobbiamo assicurarci di apportare queste modifiche per la configurazione di debug per le build interne e per la configurazione della versione per le build dell'App Store. Una volta impostati i valori in project.pbxproj, siamo pronti per distribuire l'app iOS da Codemagic senza problemi.

Configurazione della firma manuale del codice in Codemagic

Durante lo sviluppo su Linux, possiamo vedere solo lo stato dell'app Android poiché Xcode e gli strumenti iOS non possono essere installati o eseguiti su Linux. Ci sono alcuni sforzi in corso per portare gli strumenti Swift e iOS su Linux, ma ci vorrà molto tempo. Quando siamo pronti per distribuire le app, possiamo facilmente configurare CI/CD per l'app utilizzando Codemagic, vedere la Guida introduttiva qui. OnCodemagic, possiamo abilitare la firma del codice iOS dalla sezione Pubblica caricando il certificato e il profilo di provisioning che abbiamo scaricato dal portale degli sviluppatori Apple. Nell'app Codemagic, vai su Impostazioni → Pubblica → Firma codice iOS → Manuale e carica lì il tuo certificato e profilo di fornitura.

Configurazione della firma manuale del codice in Codemagic

Quando ora esegui la build, otterrai l'app iOS sotto forma di file IPA che può essere distribuito sui dispositivi di cui è stato eseguito il provisioning. L'elenco degli artefatti di build su Codemagic sarà simile a questo:

L'elenco degli artefatti di build su Codemagic

Come si può vedere nella sezione Artifacts , abbiamo codemagic_demo.ipa e i file dSYMs per i rapporti sugli arresti anomali. Possiamo installare questa app su qualsiasi dispositivo iOS che è stato aggiunto al profilo di provisioning e testare la nostra app iOS. Se vediamo qualche bug lì, possiamo sempre tornare all'ambiente Linux e correggere quei bug.

Distribuzione dell'app iOS all'App Store

A partire da ora, abbiamo creato la versione di debug dell'app iOS per il test internamente. In modo simile, possiamo distribuire l'app iOS all'App Store. Quando siamo pronti per distribuire l'app nell'App Store, dobbiamo creare l'app in modalità di rilascio . Possiamo farlo utilizzando il certificato di distribuzione e il profilo di fornitura della produzione. Possiamo generare il certificato e i profili in modo simile. Ma dobbiamo assicurarci di scegliere la distribuzione dell'App Store durante la creazione del profilo di provisioning.

Opzione di distribuzione sull'App Store

Il profilo di provisioning della distribuzione eseguirà l'app iOS su qualsiasi dispositivo e non è necessario aggiungere i dispositivi in ​​modo esplicito nel profilo di provisioning. Il profilo di provisioning dell'App Store sarà simile al seguente:

Il profilo di fornitura dell'App Store

Una volta che abbiamo il certificato di distribuzione iOS e il profilo di provisioning di produzione a portata di mano, possiamo selezionare la modalità di rilascio nel file Costruisci la sezione in Codemagic come mostrato di seguito.

La modalità di rilascio nella sezione Build in Codemagic

Abbiamo anche impostato gli argomenti build su release invece di debug. Nella sezione Pubblica, è necessario caricare il certificato di distribuzione e il profilo di fornitura di produzione per generare la versione App Store dell'app.

Una volta che Codemagic ha generato gli artefatti di build, possiamo eseguire la build su App Store Connect, precedentemente noto come iTunesConnect, seguendo le linee guida dell'App Store e inviare l'app per la revisione.

Conclusione

Con la combinazione di un framework di sviluppo di applicazioni mobili multipiattaforma e una magica soluzione CI/CD come Codemagic, possedere un Mac per lo sviluppo di app iOS non è affatto obbligatorio. Potrebbero esserci alcuni problemi nel debug dell'app durante lo sviluppo per iOS, ma è completamente possibile sviluppare e pubblicare app iOS sull'App Store usando la combinazione di Flutter e Codemagic.

Icona delle app native

Vuoi creare un'app a prova di futuro per la tua azienda?

Lavoriamo insieme