Sparkling - TikTok'un çapraz platform altyapısı
(github.com/tiktok)- TikTok, kendi uygulamalarında Lynx motorunu üretim ölçeğinde çalıştırmak için kurduğu altyapı katmanını açık kaynak olarak yayımladı. Uygulama iskeletinden build sürecine, native bridge'den navigasyona kadar entegre şekilde sunuyor
- React Native için Expo neyse, Lynx motoru üzerinde gerçek uygulamaları çalıştırmak için gereken üretim altyapısı framework'ü de bu
- Tek bir CLI komutuyla Android/iOS native shell içeren tam bir Lynx uygulama projesi anında oluşturuluyor ve build → kurulum → çalıştırma tek seferde yapılıyor
- Yalnızca TypeScript tanımları yazılarak Kotlin/Swift kodu otomatik üreten Sparkling Method ile tip güvenli JS↔native bridge uygulanıyor
hybrid://biçimindeki birleşik URL şeması navigasyonu ile Lynx sayfaları ve native ekranlar arasındaki yönlendirme tek bir sistemde ele alınıyor
Sparkling'in konumu: Lynx ile ilişkisi
- Lynx, TikTok'un yayımladığı çapraz platform UI rendering motoru; React'e benzer şekilde kod yazıldığında Android/iOS ekranlarını native rendering ile çizen bir framework
- Lynx'in kendisi bir "rendering motoru" olduğu için, gerçek uygulama işletiminde build pipeline, native↔JS iletişimi, sayfa navigasyonu, storage/media erişimi gibi ek altyapılar gerekiyor
- Sparkling bu altyapı katmanı rolünü üstleniyor ve Lynx motorunun üzerinde çalışan uygulama framework'ü olarak konumlanıyor
- Yalnızca React Native ile uygulama geliştirmenin zor olup Expo'ya ihtiyaç duyulması gibi, yalnızca Lynx ile de büyük ölçekli uygulama işletmek zor; Sparkling bu boşluğu dolduruyor
- Şu anda public beta aşamasında ve API kapsamı ile dokümantasyon iyileştirilmeye devam ediyor
Uygulama iskeleti ve build CLI
npm create sparkling-app@latest my-appile Android/iOS native shell içeren tam bir proje oluşturmanpx sparkling buildile Lynx bundle build'i,npx sparkling run:android/run:iosile build → kurulum → çalıştırma tek adımdanpx sparkling devile hot reload geliştirme sunucusu çalıştırma (varsayılan port 5969, telefon tuş takımında LYNX'e karşılık gelen sayı)npx sparkling doctorile Node.js, JDK, Android SDK, Xcode, CocoaPods gibi geliştirme ortamını otomatik teşhis etmenpx sparkling autolinkile Sparkling Method modülleri için Gradle/Podfile bağımlılıklarının otomatik kaydı ve native registry kodu üretiminpx sparkling copy-assetsile derlenmiş bundle'ı Android/iOS resource dizinlerine kopyalama
Sparkling Method — tip güvenli JS↔native bridge
- TypeScript
.d.tsdosyasına yalnızca fonksiyon tanımları yazıldığında, CLI (sparkling-method-cli codegen) Kotlin/Swift native kodunu ve TS implementasyonunu otomatik üretir - Üretilen soyut sınıflar kalıtılarak yalnızca native iş mantığı uygulanır ve ardından JS tarafından doğrudan çağrılabilir
- Yerleşik Method'lar olarak Navigation (router), Storage (anahtar-değer deposu), Media (kamera/albüm/dosya) sunulur
- Paket adı
sparkling-<module>biçiminde, method adı ise<module>.<action>(ör.router.open) kuralını izler - npm üzerinden yayımlandıktan sonra tüketici tarafta yalnızca
npm install+npx sparkling autolinkile entegrasyon tamamlanır
Şema tabanlı birleşik navigasyon
hybrid://lynxview_page?bundle=main.lynx.bundle&title=Homebiçimindeki birleşik URL şeması ile Lynx sayfaları ve native ekranlar aynı şekilde yönlendirilir- Her sayfanın bağımsız bir bundle entry point'ine sahip olduğu çok sayfalı yapı, büyük ölçekli uygulamalar için uygun bir tasarım sunar
navigate()fonksiyonunda önceden tanımlı anahtarların yanı sıra özel parametreler de şema URL'si üzerinden iletilebilir
Mevcut uygulamalara kademeli entegrasyon (Brownfield)
- Yalnızca yeni uygulamalarda değil, mevcut Android/iOS uygulamalarına Sparkling container embed edilerek de kademeli geçiş yapılabilir
- Android: Maven artifact'i (
com.tiktok.sparkling:sparkling:2.0.0) eklendikten sonra,HybridKit.init()ile başlatma →Sparkling.build(context).navigate()ile container açma - iOS: CocoaPods (
pod 'Sparkling', '2.0.0') eklendikten sonra,SPKRouter.create(withURL:)ile controller push etme veyaSPKContainerViewile view embed etme - Build edilmiş
.lynx.bundledosyası native uygulama asset'lerine kopyalanır vebundle=parametresiyle ilgili bundle belirtilir
Proje yapısı
packages/sparkling-sdk: çekirdek Sparkling SDKpackages/sparkling-method: Sparkling Method SDK (JS↔native bridge)packages/methods: yerleşik Sparkling method paketleri (Navigation, Storage, Media)packages/sparkling-app-cli: Sparkling uygulamaları için build ve çalıştırma CLIpackages/create-sparkling-app: uygulama iskeleti oluşturma CLI'ıpackages/sparkling-method-cli: Sparkling Method codegen araçlarıpackages/sparkling-types: GlobalProps tip tanımlarını tek pakette birleştirirpackages/playground: yerel geliştirme için Playground uygulaması
Teknoloji yığını ve ortam
- Node.js ^22 || ^24, pnpm v10.26.0 ortamı
- Android: JDK 11 ve üzeri, android-34 SDK gerekli
- iOS: Xcode 16+, Ruby ≥2.7 <3.4, CocoaPods gerekli
- TypeScript, Swift, Kotlin, JavaScript gibi çok dilli yapı
- Apache 2.0 lisansı
1 yorum
Lynx - web teknolojileri tabanlı native uygulama geliştirme aracı - GeekNews
Lynx - 웹 기술 기반 네이티브 앱 개발 도구
Birlikte okunabilecek iyi yazılar arasında görünmüyor.