Saya bekerja di Windows dan tidak punya Mac. Untuk developer Flutter, itu biasanya berarti satu hal: aplikasi Android bisa dirilis kapan saja, tapi iOS harus menunggu pinjam laptop teman atau sewa mesin di cloud.
Setelah beberapa aplikasi, saya punya alur yang membuat rilis iOS terasa hampir sama dengan Android: dorong kode ke GitHub, jalankan satu skrip, tunggu notifikasi TestFlight di HP.
Bagian yang memang butuh macOS
Yang benar-benar wajib macOS sebenarnya cuma satu: proses build dengan Xcode. Semua yang lain bisa dikerjakan dari mana saja:
- Sertifikat dan provisioning profile bisa dibuat lewat App Store Connect API.
- Metadata, screenshot, dan pengaturan TestFlight juga bisa lewat API, misalnya dengan CLI
asc. - Build-nya diserahkan ke CI yang punya mesin macOS. Saya pakai Codemagic.
Jadi masalahnya bukan "tidak punya Mac", tapi bagaimana membuat semua bagian itu bisa dikendalikan dari terminal Windows.
Satu kali di awal
Ada pekerjaan sekali jalan yang memang agak panjang: membuat API key App Store Connect, menyiapkan sertifikat distribusi, mendaftarkan aplikasi di Codemagic, dan menyimpan semua rahasianya sebagai variabel aman di sana. Tips terpenting: simpan isi kunci, bukan path file. Mesin build macOS tidak tahu apa itu C:\Users\.... Saya pernah kehilangan satu build gara-gara ini.
Rutinnya
Setelah semuanya siap, rilis jadi seperti ini:
- Jalankan pengecekan yang sama dengan CI:
flutter analyze,dart format,flutter test. - Commit dan push. Codemagic membangun apa yang ada di GitHub, bukan yang ada di laptop.
- Jalankan skrip PowerShell yang memicu build lewat API Codemagic.
Skrip itu mencetak setiap langkah build (sekitar delapan menit), menampilkan log langkah yang gagal kalau ada error, lalu menunggu App Store Connect selesai memproses build-nya (biasanya lima sampai lima belas menit). Begitu statusnya valid, build sudah bisa diinstal dari TestFlight.
Nomor build iOS saya serahkan ke CI: ambil nomor terakhir di TestFlight, tambah satu. Tidak ada lagi drama "build number sudah dipakai".
Yang masih menyebalkan
- Email dari Apple. Build bisa diterima tapi tetap datang email peringatan, misalnya soal teks izin yang kurang. Baca semuanya dan beresi di build berikutnya.
- Ikon yang tersimpan di cache. Kalau ganti ikon aplikasi, hapus dulu aplikasinya dari iPhone. iOS menyimpan ikon lama.
- Tidak ada simulator iOS. Pengujian harus di iPhone sungguhan lewat TestFlight. Untungnya, itu justru pengujian yang paling jujur.
Kesimpulannya
Tidak punya Mac bukan alasan untuk tidak merilis ke iOS. Bondowosopedia dan Cash Opname sama-sama dirilis ke App Store dari Windows dengan alur ini. Investasinya ada di awal. Setelah itu, rilis iOS cuma satu perintah.