- Framework yang memungkinkan pengembangan aplikasi native Android hanya dengan Swift, dengan UI, manifest, hingga lifecycle disusun dalam satu bahasa
- Menyediakan struktur untuk membangun UI Android dengan pendekatan UI deklaratif tanpa menggunakan XML, Java, atau Kotlin sama sekali
- Berjalan sebagai framework Android native murni, bukan web wrapper atau transpiler
- UI dapat didefinisikan melalui sintaks deklaratif yang mirip SwiftUI, sekaligus sepenuhnya menyembunyikan lapisan JNI yang kompleks
- Menawarkan pengalaman pengembangan terpadu dengan mendefinisikan Android Manifest dan konfigurasi Gradle langsung dalam kode Swift
- Menjadi alternatif native baru bagi developer Swift untuk berekspansi ke Android, sekaligus titik balik yang membuka kemungkinan baru bagi pengembangan lintas platform berbasis Swift
Ikhtisar Droid
- Droid adalah framework yang dirancang agar aplikasi native Android dapat dikembangkan hanya dengan bahasa Swift
- Disusun agar UI, konfigurasi aplikasi, lifecycle, dan manifest dapat dikelola dalam satu bahasa dan satu codebase
- Menghapus ketergantungan pada XML, Java, dan Kotlin yang selama ini dianggap wajib dalam pengembangan Android
- Mencakup komponen native Android seperti AndroidX, Flexbox, dan Material Design
- Menyediakan sintaks deklaratif yang mirip SwiftUI untuk menyederhanakan definisi UI
- Menyembunyikan lapisan JNI sepenuhnya dan menyediakan akses melalui API tingkat tinggi
Tujuan desain dan karakteristik
- Berbasis Pure Swift, sehingga UI, manifest, dan keseluruhan konfigurasi aplikasi ditulis dalam Swift
- Mengadopsi UI deklaratif dengan penekanan pada keterbacaan dan komposabilitas
- Mempertahankan pendekatan pengembangan No XML tanpa menggunakan XML sama sekali
- Mengadopsi model eksekusi Native Android, bukan pendekatan berbasis web atau konversi kode
- Menyediakan struktur terpadu untuk mendefinisikan UI, manifest, dan dependensi Gradle di satu tempat
Cara menyusun UI deklaratif
- Menyusun UI Android secara deklaratif dengan API yang ramah untuk Swift
- Widget Android seperti ConstraintLayout, VStack, TextView, dan MaterialButton dapat diekspresikan dalam kode Swift
- Constraint layout, event klik, dan pengaturan style dapat didefinisikan langsung di dalam kode
Menulis Android Manifest dengan Swift
- Android Manifest itu sendiri dideklarasikan dalam kode Swift
- Pengaturan ikon aplikasi, theme, activity, dan fragment dikelola pada level kode
- Penanganan event lifecycle dan logika konfigurasi dapat diintegrasikan dalam satu file Swift
Dokumentasi dan lingkungan pengembangan
- Dokumentasi resmi tersedia dan terus diperluas
- Belum semua fitur Android terdokumentasi sepenuhnya, tetapi panduan yang ada disediakan dalam bentuk yang lebih rapi
- Pengembangan dapat langsung dimulai melalui Swift Stream IDE
Cakupan dukungan
- Mendukung widget Android klasik
- Mendukung library AndroidX
- Mendukung komponen Material Design
- Mendukung layout Flexbox
Status proyek
- Proyek ini sedang dikembangkan secara aktif dan berkembang dengan cepat
- API terus disempurnakan sambil membuka ruang ekspansi, namun visi intinya tetap dipertahankan
- Feedback dan partisipasi sangat dianjurkan
1 komentar
Opini Hacker News
Swift Stream IDE v1.17.0 telah dirilis. Kini pengembangan aplikasi Android native penuh hanya dengan Swift menjadi mungkin
Tidak perlu menyentuh XML, Java, atau Kotlin sama sekali. Di balik layar, framework SwifDroid buatan saya menangani lifecycle Android, Activity, Fragment, widget UI (Material, Flexbox, dll.), dan juga mengelola dependensi Gradle secara otomatis
Framework ini mengompilasi kode Swift dan menghasilkan proyek yang bisa langsung dijalankan di Android Studio. Baik tool maupun framework dirilis dengan lisensi open source MIT
Anda bilang XML, Java, dan Kotlin tidak perlu disentuh, tetapi saya ingin tahu apakah developer Swift tanpa pengalaman Android sama sekali benar-benar bisa berhasil membuat aplikasi
Saya juga ingin tahu, untuk kondisi saat ini dan tahun depan, kira-kira berapa persen aplikasi Kotlin atau Flutter yang bisa ditulis dengan Swift
Kami sedang mencoba hal serupa dengan Rust, bukan Swift
Upaya seperti ini pada akhirnya harus melewati JNI, jadi ada keterbatasan karena 80% API hanya diekspos lewat Java
Proyek seperti ini selalu menarik, tetapi pada akhirnya akan menabrak masalah abstraksi bocor (leaky abstraction)
Sama seperti di iOS Anda tetap perlu tahu Objective-C, dan di Windows Anda perlu tahu .NET/COM
Dari pengalaman saya di Unity, marshalling dari C# ke C terasa mulus, tetapi Swift jauh lebih merepotkan
Kenyataannya, setiap framework baru perlu penanganan terpisah
Menggunakan bahasa bersama lintas platform (Swift atau Kotlin) terlihat bagus di permukaan, tetapi menurut saya dalam praktiknya tidak seefisien yang diharapkan
Pada akhirnya Anda tetap memelihara dua codebase, dan perbedaan serta workaround jadi terlalu banyak, sehingga lebih baik menikmati bahasa masing-masing
Kebanyakan developer membangun karier sambil mempelajari beberapa bahasa, dan perpindahannya pun tidak terlalu sulit. Ini opini pribadi saya, tetapi proyeknya sendiri menurut saya luar biasa
Dulu saya pernah belajar berbulan-bulan untuk membuat aplikasi Android native dengan Java, tetapi tidak menyenangkan sehingga saya menyerah
Saya cenderung lebih suka pengembangan native penuh, dan sudah memakai framework cross-platform selama puluhan tahun tanpa pernah melihat sukses besar
Berpindah bahasa selalu membawa biaya perpindahan konteks. Setiap kali bolak-balik antara Swift dan PHP, saya sering membuat kesalahan sintaks
Bahasa memang cepat dipelajari, tetapi SDK, standard library, dan framework membutuhkan waktu lama untuk benar-benar dikuasai
Apalagi sekarang, berkat tool AI, pekerjaan sederhana sudah jauh lebih cepat, jadi penghematan waktu pengembangan totalnya tidak terlalu besar
Kecuali aplikasinya pada dasarnya setara web app, saya tidak akan merekomendasikannya
Secara bahasa saya menganggap Swift lebih baik, tetapi karena KMP lebih lama dan lebih stabil, dalam praktiknya saya mungkin akan memilih itu
Tetapi saya enggan menjadi lebih terikat pada ekosistem perusahaan besar tertentu
Lagi pula, menurut saya Swift adalah bahasa yang kurang nyaman, jadi saya tidak terlalu ingin memakainya juga di platform lain
Saya penasaran bagaimana perbandingannya dengan Skip
Proyek ini tampaknya tidak memindahkan kode iOS SwiftUI ke Android, melainkan berfokus pada pengembangan Swift khusus Android
Saya ingin tahu apakah itu bisa menghasilkan kualitas aplikasi yang lebih baik, dan apakah sudah ada contoh nyatanya
Hanya dari fakta bahwa saya tidak perlu memakai Android Studio atau IntelliJ saja, menurut saya ini sudah merupakan peningkatan besar. Keren sekali
Banner persetujuan cookie-nya terasa tidak sesuai dengan regulasi Eropa
Saya tidak mengerti kenapa pengembangan mobile terasa sebegitu tidak nyaman dibanding PC
Saya juga penasaran kenapa membuat Hello World dalam assembly di mobile pun harus sesulit ini
Saya sudah cukup lama tidak mengikuti pengembangan Android, jadi kalau dirangkum kondisi sekarang
Dulu iOS memakai Swift dan Android memakai Java
Sekarang Java digantikan Kotlin, dan muncul framework cross-platform seperti Flutter atau React Native
Saya penasaran apakah Swift on Android adalah lapisan abstraksi lain seperti itu, atau justru lebih dekat ke native
Bukankah pada akhirnya yang paling cepat tetap kode native?
Secara pribadi saya lebih menyukai Flutter. Banyak developer Android native juga mengatakan Flutter mungkin adalah masa depan pengembangan Android
Untuk diskusi terkait, lihat thread Reddit ini
Proyek ini mengambil pendekatan yang berbeda dari SwiftCrossUI atau Skip
SwiftCrossUI dan Skip menjalankan SwiftUI apa adanya di berbagai platform,
sedangkan SwifDroid adalah tentang menulis UI khusus Android dengan Swift
Tujuannya adalah membuat aplikasi Android penuh dengan Swift sambil tetap memakai sistem View dan API Android secara langsung, tanpa Java/Kotlin/XML
Jadi, ini bukan pendekatan “tulis sekali, jalankan di mana saja”, melainkan arah menghadirkan pengalaman Android native melalui Swift
Saya penasaran bagaimana cara yang idiomatis di Swift untuk menangani request HTTP dan parsing JSON