Рабочая группа Swift для Android поделилась результатами работы над проектом и будущими задачами:
С момента анонса предварительной версии Swift SDK для Android рабочая группа наблюдает большой интерес к тому, как он работает и что нас ждет в будущем. Пожалуйста, ознакомьтесь с ответами на распространенные вопросы о технологии и ее будущем, а также попробуйте новые предварительные версии Swift 6.3 SDK.
Как Swift работает на Android
Swift компилируется непосредственно в нативный машинный код на Android, так же, как и на большинстве других платформ. Такой подход обеспечивает производительность, аналогичную коду на C и C++, созданному с использованием Android Native Development Kit (NDK), при этом достигая более оптимального баланса между производительностью, безопасностью и удобством использования. Для этого приложения Swift на Android включают в себя нативную среду выполнения, которая реализует многие из его функций, включая стандартную библиотеку и основные библиотеки, такие как Dispatch и Foundation.
Однако, поскольку большинство API Android доступны только через Java и Kotlin, Swift должен обращаться к среде выполнения Android (ART). Вот тут-то и пригодятся инструменты jextract и wrap-java от проекта Java Interoperability. Эти инструменты автоматически создают биндинги, позволяющие вызывать Swift из Java или наоборот, используя Java Native Interface (JNI), что позволяет Swift беспрепятственно интегрироваться с платформой Android.
Этим летом инструмент jextract получил режим JNI: вы можете посмотреть выступление его автора Мадса Одгарда на конференции Server-Side Swift Conference и попробовать пример погодного приложения, который он представил в репозитории примеров для Android.
Swift на Android в продакшене
Хотя работа над официальным взаимодействием с Java всё ещё продолжается, приложения для Android, созданные с использованием Swift, уже много лет находятся в продакшене, используя собственную разработку Java Interoperability, и эти приложения в совокупности были загружены миллионы раз. Вот несколько примечательных примеров:
- Spark — популярный почтовый клиент, использующий Swift для обмена кодом между мобильными версиями iOS/Android и настольными версиями macOS/Windows
- flowkey — интерактивное приложение для обучения игре на фортепиано, разработанное на Swift для Android и существующее уже почти десять лет
- MediQuo — приложение для здравоохранения, использующее Swift для кроссплатформенной разработки
- Naturitas — маркетплейс органических продуктов, работающий на Swift в продакшене
Текущая работа
Инициативы сообщества по запуску Swift на Android начались сразу после открытия исходного кода языка в 2015 году и продолжаются по сей день. На доске проекта Android перечислены области, которые рабочая группа считает важными — например, это упрощенная отладка, которая сейчас является для нас приоритетной. Хотя это может работать для небольших примеров, нам необходимо расширить и протестировать ее для упрощения настройки и доступа. Это, вероятно, будет означать интеграцию отладчика и инструмента Swift Language Server Protocolt, sourcekit-lsp, в интегрированные среды разработки (IDE), такие как Visual Studio Code и Android Studio, — еще одна задача на нашей доске.
Несколько месяцев назад в официальные рабочие процессы Swift на GitHub был добавлен рабочий процесс для Android, позволяющий легко тестировать сборку пакетов Swift с помощью Swift SDK для Android, и ведется работа над тем, чтобы вы могли запускать свои тесты и в эмуляторе Android.
Мы ищем новых участников и организовали видеосозвон на этих выходных, чтобы обсудить начало работы. Мы надеемся, что эти звонки для участников станут регулярным мероприятием в будущем, поскольку все больше людей будут вносить свой вклад в улучшение этих инструментов Swift.
Swift на разных платформах: логика против UI
Swift позволяет использовать одну и ту же бизнес-логику на многих платформах, и Swift на Android значительно расширяет эти возможности. Как мы уже писали в нашем проекте документа о видении, одним из важных вариантов использования, на котором мы сосредоточены, является совместное использование основной бизнес-логики, алгоритмов и моделей данных в разных приложениях. Рабочая группа не предлагает единого решения с графическим интерфейсом, однако ряд новых проектов сообщества подошли к этой задаче по-разному.
В нашем недавнем сообщении на форумах Swift перечислены несколько популярных и находящихся в разработке вариантов. Хотя рабочая группа еще не подтвердила эти утверждения в отдельных проектах, мы планируем добавить больше информации об использовании совместимых инструментов графического интерфейса с SDK Swift для Android в ближайшие месяцы.
Версионирование API Android
До недавнего времени Swift на Android не поддерживал целевое использование нескольких уровней API Android в одном приложении, но в последних предварительных версиях появились знакомые атрибуты @available и проверка среды выполнения #available, которые вы знаете по платформам Apple:
#if canImport(Android)
import Android
import Dispatch
#endif
@available(Android 33, *)
func backtrace() {
withUnsafeTemporaryAllocation(of: UnsafeMutableRawPointer.self, capacity: 1) { address in
_ = backtrace(address.baseAddress!, 1)
}
}
@main
struct ExecutableDemo {
static func main() {
#if os(Android)
print("Hello from Android API 28 or later")
if #available(Android 33, *) {
// The following code is only run on Android 33+ devices.
backtrace()
print("Hello from Android API 33+")
}
#endif
}
}
Попробуйте эту новую функцию на Android и расскажите нам, как она вам помогла.
Учитесь у сообщества
Те, кто использует Swift на Android уже много лет, делятся своим опытом, о чем пишут разработчики Readdle и flowkey уже более десяти лет.
Пьерлуиджи Чифани из The Left Bit недавно написал о своем опыте, выступил с отличным докладом на NSSpain 2025 пару месяцев назад и дал интервью Swift Toolkit в прошлом месяце.
Один из участников сообщества недавно добавил пример приложения, которое собирает C++ с помощью CMake и связывает его со Swift, используя автоматизированный JNI-бридж Swift с Java.
Ночные предварительные версии SDK Swift 6.3
Наконец, мы рады сообщить, что создана официальная система непрерывной интеграции (CI) для SDK Swift 6.3, которая выпускает ночные предварительные версии SDK Swift 6.3 для Android. Пожалуйста, следуйте руководству по началу работы, чтобы установить и использовать его.
Разработка Swift для Android — это результат усилий сообщества, продолжавшихся последнее десятилетие. Начиная с первого патча, проект вырос до приложений, находящихся в продакшене, и активной группы разработчиков. Попробуйте новые предварительные версии SDK Swift 6.3 для Android и помогите нам сделать его ещё лучше!

