اپل پیشنمایش SDK برای ساخت اپلیکیشنهای اندروید با Swift را ارائه کرد
اپل به تازگی Swift SDK برای اندروید را به صورت نسخه nightly build منتشر کرده است. هدف این SDK کمک به توسعهدهندگان برای انتقال بستههای Swift به اندروید است تا بتوانند به راحتی کدهای خود را بین پلتفرمها به اشتراک بگذارند. هرچند Swift SDK هنوز در مرحله پیشنمایش است، بیش از ۲۵٪ از بستههای موجود در Swift Package Index هماکنون قابلیت کامپایل برای اندروید را دارند.
ساختار اصلی Swift SDK
در هسته خود، Swift SDK برای اندروید شامل یک toolchain سفارشی Swift برای پلتفرم اندروید است؛ یعنی کامپایلر و پیادهسازی کتابخانه استاندارد Swift که روی اندروید اجرا میشود، به همراه مجموعهای از bindings که دسترسی به APIهای اندروید از Swift را فراهم میکنند. این toolchain از پروژه swift-java-project برای تعامل بین Java و Swift استفاده میکند و میتواند shared objects بسازد که داخل فایل apk لینک شده و از طریق JNI قابل دسترسی باشند.
پشتیبانی از رابطهای کاربری (UI)
Swift SDK برای اندروید رویکرد غیرجانبدارانهای نسبت به UI دارد. به جای وابستگی به یک فریمورک خاص، تیم توسعهدهنده از فریمورکهای موجود پشتیبانی میکند، از جمله:
- ابزارهای بومی اندروید مانند Jetpack Compose و سیستم قدیمی XML-based
- موتور UI فلاتر (Flutter)
- راهحلهای پلزنی شخص ثالث مانند Skip
یک رویکرد احتمالی دیگر، که به طور صریح توسط تیم Swift Android اعلام نشده، این است که UI با استفاده از Swift و موتورهای رندرینگ مانند OpenGL یا Vulkan ساخته شود و سپس با NativeActivity در اپلیکیشن اندروید ادغام شود.
به ویژه، فریمورک Skip SwiftUI را برای اندروید بازپیادهسازی کرده و آن را به Jetpack Compose متصل میکند. این روش به توسعهدهندگان iOS اجازه میدهد هم منطق تجاری و هم UI اپلیکیشن خود را در همان کد بیس بنویسند، با کمترین تلاش اضافی.
علاوه بر این، پروژه متنباز SwiftCrossUI نیز API مشابه SwiftUI ارائه میدهد و از macOS، لینوکس، ویندوز و به صورت محدود از اندروید پشتیبانی میکند.
چالشهای استفاده از Swift برای اپلیکیشنهای چندپلتفرمی
اگرچه ایده استفاده از Swift برای iOS و اندروید جذاب به نظر میرسد، ایجاد اپلیکیشنهای چندپلتفرمی با کیفیت، فقط به ابزار و کتابخانههای بومی محدود نمیشود. کاربری و تجربه توسعهدهنده (Developer UX) از جمله چالشهاست، زیرا:
- توسعهدهندگان iOS ممکن است دیباگ کردن روی اندروید را دشوار بیابند
- ناسازگاری مدلها بین Swift و Kotlin رخ میدهد (مثلاً Exception کاتلین قابل دریافت از Swift نیستند)
- حتی Kotlin Multiplatform هم با Kotlin برای اندروید برابر نیست و عملاً یک زبان سوم معرفی میشود
یشزمینه و گزینههای دیگر
این SDK تقریباً شش ماه پس از اعلام ایجاد گروه کاری اندروید در پروژه Swift توسط اپل عرضه شد. هدف این گروه اطمینان از این بود که Swift بدون نیاز به فورکهای غیررسمی روی اندروید کامپایل شود و کتابخانههای استاندارد Swift برای سازگاری بهتر با APIهای اندروید بهبود یابند.
پیش از این، توسعهدهندگان میتوانستند از راهحلهای شخص ثالث مانند Scade.io برای کامپایل کد Swift روی اندروید استفاده کنند. Scade مبتنی بر Swift4j است و بیشتر روی منطق برنامههای غیر UI تمرکز دارد.
برای توسعهدهندگان اندروید که قصد دارند اپلیکیشن خود را به iOS منتقل کنند، گزینهای پیشرفتهتر، استفاده از Kotlin Multiplatform همراه با Jetpack Compose Multiplatform است.




