글의 순서
Swift SDK for Android 설치 및 Swift로 Android 앱 빌드 가이드
iOS 개발자라면 “Swift로 Android 앱을 만들 수 있다면 얼마나 편할까?” 한 번쯤 생각해보셨을 겁니다. 이제 그 상상이 현실이 되기 시작했어요. 최근 공개된 Swift SDK for Android의 첫 공식 프리뷰 릴리스는 Swift 개발자가 Android 앱을 네이티브로 빌드할 수 있는 시대를 열었습니다. 하지만 초기 버전이라 설치 단계나 툴체인 세팅이 다소 까다롭습니다. 이 글에서는 그런 복잡함을 최소화하고, Swift SDK for Android 설치부터 실제 앱 빌드, 그리고 디버깅까지의 전체 워크플로우를 단계별로 정리했습니다.
Swift로 Android 앱을 빌드할 수 있게 된 배경
Swift 오픈소스 팀은 6월, Android 워킹그룹을 설립하며 Swift의 플랫폼 지원을 확장한다고 발표했습니다. 그리고 이번에 공개된 Swift SDK for Android의 "야간 프리뷰"는 그 첫 결과물입니다.
Swift SDK는 이제 공식 툴체인으로 제공되어, 커뮤니티 빌드나 비공식 포팅 없이 Android 네이티브 라이브러리를 만들 수 있게 되었죠.
- Windows에서는 Swift 설치 프로그램에 포함되어 있으며,
- Linux·macOS에서는 별도 다운로드로 설치합니다.
Swift Package Index에 등록된 패키지 중 약 25%가 이미 안드로이드 빌드를 지원한다고 하니, 코드 재활용이 가능하다는 점도 큰 장점입니다.
Android에서 Swift 실행 준비
Android에서 Swift 코드를 실행하려면 기본적으로 다음 개발 환경이 필요합니다.
| 구성 요소 | 권장 버전 | 설명 |
|---|---|---|
| Android NDK | r27d | NDK 툴체인 및 헤더 포함 |
| Android SDK | 최신 버전 | 플랫폼 툴 및 빌드 도구 |
| JDK | OpenJDK 11 | Gradle 및 Android 스튜디오 빌드용 |
| CMake / ninja | 최신 | 네이티브 빌드 지원 |
| Swift SDK for Android | 개발 스냅샷 (예: 2025-10-16) | Swift 런타임 및 크로스 툴체인 |
NDK와 Swift SDK는 반드시 ABI와 Swift 버전이 일치해야 합니다. Swift 런타임 버전이 다르면 빌드 오류나 런타임 충돌이 자주 발생하므로, 같은 스냅샷으로 설치하세요.
Swift 도구체인 설치 및 SDK 연결
Swift SDK를 크로스 컴파일 환경에 세팅하기 위한 명령 예시는 다음과 같습니다.
$ swiftly install main-snapshot-2025-10-16
$ swiftly use main-snapshot-2025-10-16
$ swiftly run swift --version
Swift SDK를 설치하고 NDK와 연결합니다.
$ swift sdk install https://download.swift.org/development/android-sdk/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a_android-0.1.artifactbundle.tar.gz --checksum 451844c232cf1fa02c52431084ed3dc27a42d103635c6fa71bae8d66adba2500
$ export ANDROID_NDK_HOME=$HOME/android-ndk/android-ndk-r27d
$ ./setup-android-sdk.sh
이 설정으로 Swift SDK가 NDK 툴체인과 연결되어, ARM64 또는 x86_64 타깃으로 컴파일할 수 있습니다.
샘플 프로젝트로 환경 검증하기
공식 시작 가이드에서는 “Hello World” 예제를 통해 환경을 검증하도록 안내합니다.
$ mkdir /tmp/hello && cd /tmp/hello
$ swiftly run swift package init --type executable
$ swiftly run swift build --swift-sdk aarch64-unknown-linux-android28 --static-swift-stdlib
생성된 실행파일을 디바이스로 전송하고 실행합니다.
$ adb push .build/aarch64-unknown-linux-android28/debug/hello /data/local/tmp
$ adb shell chmod 755 /data/local/tmp/hello
$ adb shell /data/local/tmp/hello
정상 출력이 보이면 Swift 툴체인이 완전하게 세팅된 것입니다.
Gradle 구성과 네이티브 라이브러리 통합
Swift 코드를 앱에 포함하려면 SwiftPM에서 라이브러리 제품을 만들고, .so 파일을 각 ABI 폴더에 배치합니다.
| 경로 | 역할 |
|---|---|
| app/src/main/jniLibs/arm64-v8a/libMySwift.so | ARM64 디바이스용 네이티브 라이브러리 |
| app/src/main/jniLibs/x86_64/libMySwift.so | 에뮬레이터용 네이티브 라이브러리 |
build.gradle의 핵심 설정은 다음과 같습니다.
android {
defaultConfig {
ndk { abiFilters "arm64-v8a", "x86_64" }
}
packagingOptions {
pickFirst 'libc++_shared.so'
}
}
이 방식으로 Swift 런타임 및 Swift 네이티브 라이브러리를 APK에 통합할 수 있습니다.
Kotlin 및 Java와의 상호 운용: swift-java 사용하기
swift-java 프로젝트는 Java ↔ Swift 통신을 자동화합니다.
기존의 JNI 브리지를 수동으로 작성하지 않아도, Swift 인터페이스 정의를 기반으로 안전한 바인딩을 생성합니다.
이를 통해 Android의 Java/Kotlin 코드에서 Swift 함수를 직접 호출하거나, 반대로 Swift에서 안드로이드 API를 사용할 수 있습니다.
디버깅과 문제 해결
Android에서 Swift를 빌드할 때 마주치는 대표적인 오류와 해결책입니다.
| 문제 | 원인 | 해결 |
|---|---|---|
| 빌드 실패 (ABI mismatch) | Swift SDK와 호스트 버전 불일치 | swift –version으로 동일 스냅샷 여부 확인 |
| 런타임 symbol not found | Swift 표준 라이브러리 누락 | –static-swift-stdlib 플래그 사용 |
| adb 실행 시 permission denied | 실행 권한 없음 | adb shell chmod 755 <file> 명령 실행 |
| NDK setup 실패 | ANDROID_NDK_HOME 미설정 | 환경변수 경로 재점검 후 setup-android-sdk.sh 재실행 |
로그 확인은 adb logcat으로, 네이티브 크래시는 ndk-stack으로 분석하세요.
또한 Android Studio의 Native Debugger에서 Swift 심볼 디버깅도 지원됩니다.
빌드 및 배포 자동화(CI/CD)
Swift Android 워킹그룹은 공식 CI 파이프라인을 운영합니다.
개발자는 이를 참고해 각 ABI별 자동 빌드 및 APK 생성을 CI 스크립트에 통합할 수 있습니다.
빌드 자동화 시에는 다음 프로세스가 일반적입니다.
- 각 아키텍처에 대해
swift build --swift-sdk <triple>실행 - 각
.so결과물을jniLibs/<abi>/폴더에 복사 - Gradle로 APK 빌드
adb install또는 Play Store 업로드 전 내부 테스트
마무리: Swift Android 시대의 시작
지금의 Swift SDK for Android는 “나이트리 프리뷰” 버전이지만, Swift의 크로스플랫폼 개발 가능성을 공식적으로 연 Android의 첫걸음이라 할 수 있습니다.
코드를 재사용하고, Swift 언어의 안정성과 성능을 Android에도 확장하고 싶다면, 지금 바로 Getting Started 가이드와 샘플 프로젝트부터 실습해 보세요.
단계별 환경설정과 버전 일치만 확실히 해두면, Swift 코드를 Android에서 실행하는 것은 더 이상 꿈이 아닙니다.
자주하는 질문
Swift SDK for Android를 어떻게 설치하나요?
– Windows: 설치 프로그램에 포함된 인스톨러 사용.
– Linux/macOS:
1. `swiftly install main-snapshot-2025-10-16` 및 `swiftly use main-snapshot-2025-10-16`로 툴체인 활성화
2. Swift SDK 아티팩트 설치:
`swift sdk install https://download.swift.org/…/swift-DEVELOPMENT-SNAPSHOT-2025-10-16-a_android-0.1.artifactbundle.tar.gz –checksum <checksum>`
3. `export ANDROID_NDK_HOME=$HOME/android-ndk/android-ndk-r27d` 설정 후 `./setup-android-sdk.sh` 실행
중요: Swift SDK와 NDK(및 타깃 ABI)가 같은 스냅샷/버전과 일치해야 빌드·런타임 문제를 피할 수 있습니다.
Swift 코드로 Android 앱을 빌드하고 APK에 통합하려면 어떻게 해야 하나요?
1. 샘플로 툴체인 검증:
– `swift package init –type executable`
– `swift build –swift-sdk aarch64-unknown-linux-android28 –static-swift-stdlib`
– 빌드한 바이너리를 디바이스로 `adb push` → `adb shell chmod 755` → 실행 확인
2. 라이브러리(.so) 만들기: SwiftPM에서 라이브러리 제품을 빌드하여 각 ABI용 `.so` 생성(예: arm64-v8a, x86_64).
3. Android 프로젝트에 통합: 생성된 `.so` 파일을 `app/src/main/jniLibs/<abi>/libMySwift.so` 위치에 넣음.
4. Gradle 설정 예:
android {
defaultConfig { ndk { abiFilters "arm64-v8a", "x86_64" } }
packagingOptions { pickFirst 'libc++_shared.so' }
}
5. Java/Kotlin ↔ Swift 연동: `swift-java` 같은 바인딩 도구를 사용하면 JNI 코드를 수동 작성할 필요 없이 안전한 호출을 생성할 수 있습니다.
빌드나 실행 중 자주 발생하는 문제와 해결 방법은?
– ABI mismatch(빌드 실패): Swift SDK와 사용 중인 스냅샷이 다름. `swift –version`으로 스냅샷 일치 여부 확인.
– 런타임 "symbol not found": Swift 표준 라이브러리 누락. `–static-swift-stdlib` 플래그 사용하거나 필요한 런타임을 APK에 포함.
– adb permission denied: 실행 권한이 없음 → `adb shell chmod 755 <file>` 실행.
– NDK setup 실패: `ANDROID_NDK_HOME` 환경변수 경로 확인 후 `setup-android-sdk.sh` 재실행.
추가 팁: 로그 확인은 `adb logcat`, 네이티브 크래시는 `ndk-stack`으로 분석하고 Android Studio의 Native Debugger로 Swift 심볼 디버깅을 활용하세요.



