10월 30, 2025

IPSK

애플 Swift SDK for Android 설치 및 앱 빌드 가이드 공개

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 스크립트에 통합할 수 있습니다.
빌드 자동화 시에는 다음 프로세스가 일반적입니다.

  1. 각 아키텍처에 대해 swift build --swift-sdk <triple> 실행
  2. .so 결과물을 jniLibs/<abi>/ 폴더에 복사
  3. Gradle로 APK 빌드
  4. adb install 또는 Play Store 업로드 전 내부 테스트

마무리: Swift Android 시대의 시작

지금의 Swift SDK for Android는 “나이트리 프리뷰” 버전이지만, Swift의 크로스플랫폼 개발 가능성을 공식적으로 연 Android의 첫걸음이라 할 수 있습니다.
코드를 재사용하고, Swift 언어의 안정성과 성능을 Android에도 확장하고 싶다면, 지금 바로 Getting Started 가이드와 샘플 프로젝트부터 실습해 보세요.
단계별 환경설정과 버전 일치만 확실히 해두면, Swift 코드를 Android에서 실행하는 것은 더 이상 꿈이 아닙니다.

자주하는 질문

Swift SDK for Android를 어떻게 설치하나요?
기본 요구사항(Android NDK r27d, 최신 Android SDK, OpenJDK 11, CMake/ninja)을 준비한 뒤 Swift SDK 개발 스냅샷을 설치합니다. 예시 절차:
– 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 심볼 디버깅을 활용하세요.

IPSK

IPSK

잇맹 서울시 강서구 마곡로 01021246121

IT 테크 소식을 전달하는 IPSG 입니다. 5년째 해외 테크 소식을 누구보다 빨리 가져와서 한국에 전달하고 있습니다.

IT Tech 스마트폰 AI

요약 · 질문
AI 요약/질문 도우미
현재 화면을 기준으로 요약·질문을 도와드려요.
글의 요약