- Yalnızca Swift ile Android yerel uygulamaları geliştirmeyi mümkün kılan bir framework; UI'dan manifest'e ve yaşam döngüsüne kadar her şeyi tek bir dille kuruyor
- XML, Java veya Kotlin hiç kullanmadan Android UI'ını deklaratif UI yaklaşımıyla oluşturmayı sağlayan bir yapı sunuyor
- Web sarmalayıcısı veya transpiler değil, tamamen yerel bir Android framework'ü olarak çalışıyor
- SwiftUI'ya benzer deklaratif sözdizimiyle UI tanımlamaya olanak veriyor ve karmaşık JNI katmanını tamamen gizliyor
- Android Manifest ve Gradle ayarlarını bile doğrudan Swift koduyla tanımlayan birleşik bir geliştirme deneyimi sunuyor
- Swift geliştiricilerinin Android'e açılması için yeni bir yerel alternatif ve Swift tabanlı çapraz platform geliştirmenin yeni olanaklarını açan bir dönüm noktası
Droid genel bakış
- Droid, yalnızca Swift dilini kullanarak Android yerel uygulamaları geliştirmek için tasarlanmış bir framework'tür
- UI, uygulama ayarları, yaşam döngüsü ve manifest'i tek bir dil ve kod tabanı içinde yönetilecek şekilde yapılandırılmıştır
- Android geliştirmede zorunlu kabul edilen XML, Java ve Kotlin bağımlılıklarını ortadan kaldırır
- AndroidX, Flexbox, Material Design gibi Android'in yerel bileşenlerini içerir
- SwiftUI'ya benzer deklaratif sözdizimi sunarak UI tanımını basitleştirir
- JNI katmanını tamamen gizler ve üst seviye API'lerle erişim sağlar
Tasarım hedefleri ve özellikler
- Pure Swift temelli olarak UI, manifest ve genel uygulama yapılandırmasını Swift ile yazar
- Deklaratif UI yaklaşımını benimseyerek okunabilirlik ve bileştirilebilirliği öne çıkarır
- Hiç XML kullanmayan No XML geliştirme yaklaşımını sürdürür
- Web tabanlı yaklaşım veya kod dönüştürme yerine yerel Android çalışma modelini benimser
- UI, manifest ve Gradle bağımlılıklarını tek yerde tanımlayan birleşik bir yapı sunar
Deklaratif UI oluşturma yöntemi
- Swift dostu API'lerle Android UI'ını deklaratif olarak kurar
- ConstraintLayout, VStack, TextView, MaterialButton gibi Android widget'larını Swift koduyla ifade eder
- Yerleşim kısıtları, tıklama olayları ve stil ayarlarını doğrudan kod içinde tanımlar
Swift ile yazılan Android Manifest
- Android Manifest'in kendisini Swift kodu olarak tanımlar
- Uygulama ikonu, tema, activity ve fragment ayarlarını kod seviyesinde yönetir
- Yaşam döngüsü olay işleme ve yapılandırma mantığını tek bir Swift dosyasında birleştirir
Dokümantasyon ve geliştirme ortamı
- Resmî dokümantasyon sunuluyor ve sürekli genişletiliyor
- Android'in tüm özellikleri henüz tamamen dokümante edilmese de mevcut kılavuzlar derli toplu biçimde sunuluyor
- Swift Stream IDE üzerinden hemen geliştirmeye başlanabiliyor
Destek kapsamı
- Classic Android widget desteği
- AndroidX kütüphane desteği
- Material Design bileşen desteği
- Flexbox yerleşim desteği
Proje durumu
- Proje aktif olarak geliştiriliyor ve hızla evriliyor
- API, genişleme olasılıkları açık tutularak iyileştiriliyor ancak temel vizyon korunuyor
- Geri bildirim ve katkı aktif olarak teşvik ediliyor
1 yorum
Hacker News yorumları
Swift Stream IDE v1.17.0 duyuruldu. Artık yalnızca Swift ile tamamen yerel Android uygulamaları geliştirmek mümkün.
XML, Java veya Kotlin'e hiç dokunmak gerekmiyor. Arka planda, geliştiricinin yazdığı SwifDroid framework'ü Android yaşam döngüsünü, Activity, Fragment, UI widget'larını (Material, Flexbox vb.) yönetiyor ve Gradle bağımlılıklarını da otomatik olarak idare ediyor.
Swift kodunu derleyip Android Studio'da doğrudan çalıştırılabilecek bir proje üretiyor. Hem araç hem de framework MIT açık kaynak lisansı ile yayımlanmış.
XML, Java ve Kotlin'e dokunulmadığı söylenmiş ama Android deneyimi hiç olmayan bir Swift geliştiricisinin de başarılı şekilde uygulama yapıp yapamayacağını merak ediyorum.
Ayrıca bugün ve gelecek yıl itibarıyla Kotlin veya Flutter uygulamalarının yaklaşık yüzde kaçının Swift ile yazılabileceğini de bilmek isterim.
Biz de benzer bir şeyi Swift yerine Rust ile denemeye çalışıyoruz.
Bu tür girişimler sonuçta JNI üzerinden geçmek zorunda, dolayısıyla API'nin yüzde 80'inin yalnızca Java olarak sunulması nedeniyle bir sınırı var.
Bu projeler her zaman ilginçtir ama sonunda sızdıran soyutlama (leaky abstraction) sorununa çarparlar.
Tıpkı iOS'ta Objective-C bilmek, Windows'ta da .NET/COM bilmek gerekmesi gibi.
Unity tarafındaki deneyimime göre C#'tan C'ye marshaling sorunsuz ama Swift çok daha fazla uğraş istiyor.
Gerçekte her yeni framework için ayrı ayrı uğraşmak gerekiyor.
Platformlar arasında ortak bir dil kullanmak (Swift ya da Kotlin gibi) kâğıt üzerinde iyi görünüyor ama pratikte beklendiği kadar verimli olmadığını düşünüyorum.
Sonunda yine iki ayrı kod tabanı tutuluyor; farklar ve geçici çözümler arttıkça herkesin kendi dilini severek kullanması daha mantıklı oluyor.
Çoğu geliştirici kariyeri boyunca birden fazla dil öğreniyor ve geçiş yapmak da o kadar zor değil. Kişisel görüşüm bu ama projenin kendisini yine de harika buluyorum.
Ben de zamanında Java ile Android yerel uygulaması yapmak için aylarca çalıştım ama keyif almadığım için bıraktım.
Tamamen yerel geliştirmeyi tercih ediyorum ve onlarca yıl cross-platform framework kullansam da büyük bir başarı elde ettiğimi söyleyemem.
Dil değiştirmenin her zaman bir bağlam değiştirme maliyeti var. Swift ile PHP arasında gidip gelirken sürekli sözdizimi hataları yapıyorum.
Bir dili hızlıca öğrenebilirsiniz ama SDK, standart kütüphane ve framework'lerde ustalaşmak uzun zaman alıyor.
Özellikle bugün AI araçları yüzünden basit işlerin hızı zaten artmış durumda; bu yüzden toplam geliştirme süresini ciddi ölçüde azaltmıyor.
Uygulama fiilen bir web app düzeyindeyse başka, ama değilse tavsiye etmem.
Dil olarak Swift'i daha iyi buluyorum ama KMP daha eski ve daha oturmuş olduğu için pratikte muhtemelen onu kullanırdım.
Ama belirli büyük şirket ekosistemlerine daha fazla bağımlı olmak istemiyorum.
Ayrıca Swift bana kişisel olarak rahatsız hissettiren bir dil, bu yüzden onu başka platformlarda da özellikle kullanmak istemem.
Skip ile karşılaştırınca nasıl olduğunu merak ediyorum.
Bu proje iOS SwiftUI kodunu Android'e taşımaktan ziyade, Android'e özel Swift geliştirmeye odaklanıyor gibi görünüyor.
Bunun gerçekten daha iyi uygulama kalitesine yol açıp açmadığını ve buna dair gerçek örnekler olup olmadığını merak ediyorum.
Sırf Android Studio veya IntelliJ kullanmak zorunda olmamak bile büyük bir iyileştirme gibi geliyor. Harika iş.
Çerez onay penceresi Avrupa mevzuatına uygun değilmiş gibi duruyor.
Mobil geliştirme neden PC'den bu kadar rahatsız edici anlamıyorum.
Mobilde assembly ile bir Hello World yazmak bile neden bu kadar zor, merak ediyorum.
Android geliştirmeye bir süredir ara vermiştim; bugünkü tabloyu toparlamaya çalışırsam
Eskiden iOS'ta Swift, Android'de Java vardı.
Şimdi Java'nın yerini Kotlin aldı ve Flutter ya da React Native gibi cross-platform framework'ler ortaya çıktı.
Android üzerinde Swift, bunlar gibi bir başka soyutlama katmanı mı, yoksa yerelliğe daha mı yakın, merak ediyorum.
Sonuçta en hızlı olan şey yerel kod değil mi?
Ben kişisel olarak Flutter'ı tercih ediyorum. Birçok Android yerel geliştiricisi de Flutter'ın Android geliştirmenin geleceği olabileceğini söylüyor.
İlgili tartışma için bu Reddit başlığına bakılabilir.
Bu proje SwiftCrossUI ya da Skip ile farklı bir yaklaşım izliyor.
SwiftCrossUI ve Skip, SwiftUI'yi olduğu gibi birden fazla platformda çalıştırırken
SwifDroid, Android'e özel UI'yi Swift ile yazmayı hedefliyor.
Android'in View sistemi ve API'lerini doğrudan kullanırken, Java/Kotlin/XML olmadan tamamen Android uygulaması yapmayı amaçlıyor.
Yani bu, “bir kez yaz her yerde çalıştır” yaklaşımından çok, Android yerel deneyimini Swift ile kurma yönünde bir çalışma.
Swift'te HTTP istekleri ve JSON ayrıştırmayı idiomatik biçimde nasıl ele aldıklarını merak ediyorum.