Kembangkan dan distribusikan aplikasi iOS tanpa Mac dengan Flutter

Diterbitkan: 2019-08-23

Catatan dari editor: Di Miquido, kami mendukung komunitas pecinta Flutter dan kami selalu dengan senang hati berkontribusi untuk berbagi pengetahuan di seluruh jaringan Flutter. Hari ini, kami menghadirkan artikel tamu oleh Codemagic, yang membahas topik pengembangan aplikasi iOS dengan Flutter dan… tanpa perangkat macOS. Nikmati setiap bagiannya!


Sebagian besar waktu, aplikasi iOS dikembangkan dan didistribusikan dari mesin macOS. Sulit membayangkan mengembangkan aplikasi untuk platform iOS tanpa macOS. Namun, dengan kombinasi Flutter dan Codemagic, Anda dapat mengembangkan dan mendistribusikan aplikasi iOS tanpa menggunakan macOS. Dalam posting kami sebelumnya, kami telah menjelaskan proses penandatanganan kode aplikasi iOS tanpa Mac. Dalam posting ini, kami akan membahas secara rinci proses pengembangan aplikasi Flutter di Linux dan menggunakan penandatanganan kode kustom/manual dengan Codemagic untuk memiliki kontrol penuh atas penandatanganan aplikasi pada contoh aplikasi Comagic-Demo.

Mengembangkan aplikasi Flutter di Linux

Flutter adalah kerangka kerja pengembangan aplikasi seluler lintas platform yang memungkinkan untuk mengembangkan aplikasi iOS dan Android dari kode sumber yang sama. Namun, kerangka kerja asli Apple yang digunakan untuk mengembangkan aplikasi iOS tidak dapat dikompilasi di platform lain seperti Linux atau Windows. Komponen iOS asli memerlukan macOS atau Darwin untuk mengembangkan dan mendistribusikan aplikasi iOS. Namun, teknologi seperti Flutter memungkinkan kami mengembangkan aplikasi lintas platform di Linux atau Windows dan kami kemudian dapat mendistribusikan aplikasi tersebut ke Google Play Store atau Apple App Store menggunakan solusi Codemagic CI/CD.

Mendapatkan aplikasi Flutter di Linux

Aplikasi Android dapat dibuat, diuji, dan dipublikasikan dari platform Linux. Kita bisa memanfaatkan fitur Android ini untuk mengaktifkan pengembangan aplikasi Flutter di Linux. Aplikasi Flutter kami disebut Comagic-Demo. Kami akan menggunakan aplikasi itu untuk menunjukkan cara membangun untuk Android & iOS di Linux. Namun, perlu diingat bahwa, kami hanya dapat mengembangkan terhadap Android di Linux bukan iOS. Kami masih akan mendapatkan aplikasi iOS yang dapat digunakan ke App Store saat mengembangkan aplikasi Android di Linux. Kami bisa mendapatkan Comagic-Demo kami ke Linux menggunakan cara yang berbeda.

Dapatkan mesin Linux

Jika Anda sudah memiliki komputer dengan Linux yang terinstal di dalamnya, maka seluruh prosesnya mudah. Anda hanya perlu menginstal Android SDK dan Flutter di mesin Linux. Setelah kami mengkloning aplikasi Comagic-Demo, kami dapat langsung mulai mengerjakannya.

Buat wadah Docker

Cara lain untuk mendapatkan aplikasi Flutter di Linux adalah dengan menggunakan Docker. Jika Anda sudah familiar dengan ekosistem Docker, maka Anda dapat membuat Dockerfile yang telah menginstal Android SDK dan Flutter. Ada banyak Android Dockerfile di Dockerhub, kita hanya perlu memperluas image tersebut dengan Flutter SDK. Mari buat Dockerfile sederhana yang memperluas contoh gambar buruh pelabuhan Android di sini untuk memasukkan lingkungan Android dan Flutter ke dalam wadah Docker. Dockerfile harus menyalin aplikasi ke dalam wadah dan menjalankan lingkungan Flutter Android. Contoh Dockerfile untuk Comagic-Demo akan terlihat seperti ini:

 DARI runmymind/docker-android-sdk
JALANKAN mkdir /codemagic-demo
WORKDIR /codemagic-demo
MENAMBAHKAN . /codemagic-demo
JALANKAN apt-get update && \
    apt-get install -y lcov git-core curl unzip && \
    git clone https://github.com/flutter/flutter.git && \
    /flutter/bin/dokter berdebar && \
    apt-get remove -y curl unzip && \
    apt autoremove -y && \
    rm -rf /var/lib/apt/daftar/*
ENV PATH $ PATH:/flutter/bin/cache/dart-sdk/bin:/flutter/bin
RUN dokter berdebar

Cuplikan kode ini hanya untuk tujuan ilustrasi, tetapi Anda dapat menyesuaikan Dockerfile sesuai kebutuhan Anda. Setelah Anda menginstal Dockerfile dan Docker, Anda bisa mendapatkan aplikasi Codemagic menggunakan Docker.

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

Setelah kita menjalankan perintah ini, container Docker akan berjalan dengan lingkungan Flutter.

Aplikasi Dockerising Futter akan menjadi topik yang berbeda dan kami akan membahasnya secara detail di posting mendatang.

Menghasilkan aset penandatanganan kode dari App Store Connect

Untuk menandatangani kode aplikasi iOS, Anda memerlukan akun pengembang Apple, sertifikat pengembangan dan distribusi, ID aplikasi Anda, dan profil penyediaan yang dibuat untuk aplikasi tersebut. Kami telah membahas detail aktivitas penandatanganan kode di posting sebelumnya. Untuk mengonfigurasi penandatanganan kode manual untuk pengembangan atau debug build aplikasi iOS di Codemagic, kita memerlukan hal-hal berikut:

  • Sertifikat pengembangan atau distribusi dalam format .P12
  • Profil penyediaan yang diunduh dari App Store Connect atau portal Pengembang Apple
  • Pengidentifikasi bundel aplikasi iOS

Kami dapat mengunduh sertifikat dan profil penyediaan dari bagian Sertifikat, Pengidentifikasi, dan Profil di portal Pengembang Apple. di

Unduh profil penyediaan dari portal pengembang iOS

Demikian pula, kami dapat mengunduh profil penyediaan dari portal pengembang Apple.

Profil penyediaan iOS

Kami memerlukan sertifikat dan profil penyediaan untuk menandatangani kode aplikasi iOS kami di Codemagic, jadi simpan file ini untuk digunakan nanti.

Memperbarui file proyek Xcode

Sekarang, kami telah mendapatkan semua aset penandatanganan kode dari portal Pengembang Apple. Selanjutnya, kita perlu memilah file proyek Xcode untuk menggunakan penandatanganan kode manual dengan tim yang benar dan profil penyediaan. Kita bisa melakukan ini dengan menggunakan skrip Ruby menggunakan Xcodeproj Gem atau kita bisa mengubah kolom berikut di file i os/YOUR_APP.xcodeproj/project.pbxproj .

  • DevelopmentTeam = YOUR_DEVELOPMENT_TEAM_ID
  • ProvisioningStyle = Manual
  • PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE

Di aplikasi Codemagic-Demo kami, kami harus mengedit file proyek Xcode di sini di GitHub. Kami harus memastikan untuk membuat perubahan ini untuk konfigurasi debug untuk build internal dan untuk konfigurasi rilis untuk build App Store. Setelah kami menetapkan nilai di project.pbxproj, kami siap untuk menerapkan aplikasi iOS dari Codemagic tanpa masalah.

Menyiapkan penandatanganan kode manual di Codemagic

Saat mengembangkan di Linux, kami hanya dapat melihat status aplikasi Android karena perangkat Xcode dan iOS tidak dapat diinstal atau dijalankan di Linux. Ada beberapa upaya berkelanjutan untuk menghadirkan perangkat Swift dan iOS di Linux tetapi itu akan memakan banyak waktu. Saat kami siap untuk mendistribusikan aplikasi, kami dapat dengan mudah mengatur CI/CD untuk aplikasi menggunakan Codemagic, lihat Panduan Memulai di sini. OnCodemagic, kami dapat mengaktifkan penandatanganan kode iOS dari bagian Publikasikan dengan mengunggah sertifikat dan profil penyediaan yang telah kami unduh dari portal Pengembang Apple. Di aplikasi Codemagic, navigasikan ke Pengaturan → Publikasikan → Penandatanganan kode iOS → Manual dan unggah sertifikat dan profil penyediaan Anda di sana.

Menyiapkan penandatanganan kode manual di Codemagic

Saat Anda menjalankan build, Anda akan mendapatkan aplikasi iOS dalam bentuk file IPA yang dapat digunakan pada perangkat yang disediakan. Daftar artefak build pada Codemagic akan terlihat seperti ini:

Daftar artefak build di Codemagic

Seperti yang dapat dilihat di bagian Artefak , kami mendapatkan codemagic_demo.ipa serta file dSYM untuk laporan kerusakan. Kami dapat menginstal aplikasi ini di perangkat iOS apa pun yang telah ditambahkan ke profil penyediaan dan menguji aplikasi iOS kami. Jika kami melihat bug di sana, kami selalu dapat kembali ke lingkungan Linux dan memperbaiki bug tersebut.

Mendistribusikan aplikasi iOS ke App Store

Sampai sekarang, kami telah membangun versi debug dari aplikasi iOS untuk pengujian secara internal. Dengan cara yang sama, kami dapat mendistribusikan aplikasi iOS ke App Store. Saat kita siap untuk menyebarkan aplikasi ke App Store, kita perlu membangun aplikasi dalam mode Rilis . Kami dapat melakukannya dengan menggunakan sertifikat distribusi dan profil penyediaan produksi. Kami dapat membuat sertifikat dan profil dengan cara yang sama. Tetapi kita harus memastikan untuk memilih distribusi App Store saat membuat profil penyediaan.

Opsi distribusi App Store

Profil penyediaan distribusi akan menjalankan aplikasi iOS di perangkat apa pun dan kami tidak perlu menambahkan perangkat secara eksplisit di profil penyediaan. Profil penyediaan App Store akan terlihat seperti ini:

Profil penyediaan App Store

Setelah, kami memiliki sertifikat distribusi iOS dan profil penyediaan produksi , kami dapat memilih mode Rilis di Bangun bagian di Codemagic seperti yang ditunjukkan di bawah ini.

Mode Rilis di bagian Build di Codemagic

Kami juga telah menetapkan argumen build untuk dirilis alih-alih debug. Di bagian Publikasikan, kita perlu mengunggah sertifikat distribusi dan profil penyediaan produksi untuk menghasilkan versi App Store dari aplikasi.

Setelah Codemagic menghasilkan artefak build, kita dapat membangun ke App Store Connect, sebelumnya dikenal sebagai iTunesConnect, mengikuti pedoman App Store dan mengirimkan aplikasi untuk ditinjau.

Kesimpulan

Dengan kombinasi kerangka kerja pengembangan aplikasi seluler lintas platform dan solusi CI/CD ajaib seperti Codemagic, memiliki pengembangan aplikasi Mac untuk iOS tidak wajib sama sekali. Mungkin ada beberapa masalah dalam men-debug aplikasi saat mengembangkan untuk iOS, tetapi sangat mungkin untuk mengembangkan dan memublikasikan aplikasi iOS ke App Store menggunakan kombinasi Flutter dan Codemagic.

Ikon aplikasi asli

Ingin membuat aplikasi masa depan untuk bisnis Anda?

Mari bekerja bersama