Swift로 Android 앱 구축하기: Hotwire Native의 미래를 위한 탐구

Using Swift to build… Android apps? - by Joe Masilotti

작성자
발행일
2025년 10월 26일

핵심 요약

  • 1 Apple이 Swift for Android 프리뷰를 공개하며 크로스 플랫폼 앱 개발의 새 지평을 열었으나, 현재 Hotwire Native 앱에 즉시 적용하기에는 한계가 있습니다.
  • 2 Hotwire Native 앱에서 Swift를 활용하여 Kotlin 사용을 줄이고 단일 언어로 비즈니스 로직을 공유하는 가능성을 탐색합니다.
  • 3 현재 Swift for Android는 JNI를 통한 복잡한 연동과 UI 솔루션 부재로, 비즈니스 로직 공유에 중점을 두며 UI는 기존 Android 프레임워크에 의존합니다.

도입

최근 Apple이 Swift for Android의 첫 프리뷰 버전을 발표하며, Apple 플랫폼에서 사용하던 Swift로 Android 비즈니스 로직을 구축할 수 있게 되었습니다. 이는 Hotwire Native 앱 개발자들에게 '단일 네이티브 프로그래밍 언어로 크로스 플랫폼 앱을 구축할 수 있을까?'라는 중요한 질문을 던지게 합니다. 특히 Ruby, Swift, Kotlin 세 가지 언어를 배워야 하는 Hotwire Native 환경에서 Swift와 Kotlin을 하나로 통합할 수 있다면 개발 효율성이 크게 향상될 것이라는 기대를 모으고 있습니다.

Swift on Android의 잠재적 활용

Swift for Android의 잠재적 활용 분야는 다양합니다. 단순히 iOS와 Android 간 코드 공유를 넘어 다음을 포함합니다.

  • 공유 비즈니스 로직: iOS 및 Android 애플리케이션 전반에 걸쳐 핵심 비즈니스 로직, 알고리즘, 데이터 모델을 공유하여 중복 작업을 최소화하고 일관성을 보장합니다.

  • 성능 중요 모듈: Swift의 강력한 성능 특성은 이미지 처리, 오디오 조작 또는 계산 집약적인 작업과 같은 성능에 민감한 구성 요소를 개발하는 데 이상적입니다.

  • 크로스 플랫폼 라이브러리 및 SDK: Swift를 활용하여 기존 Android 및 iOS 애플리케이션에 쉽게 통합될 수 있는 라이브러리 및 SDK를 구축할 수 있습니다.

  • 전체 네이티브 애플리케이션: UI에 상당한 노력이 필요하지만, 각 OS의 플랫폼 네이티브 UI 프레임워크를 사용하여 전체 Android 애플리케이션을 Swift로 구축하는 것도 가능합니다.

설치 과정의 복잡성

Swift for Android를 시작하려면 여러 구성 요소를 수동으로 설치해야 합니다. Swift 환경 관리자인 Swiftly를 설치한 다음, Swift for Android 문서에 따라 호스트 툴체인, Android용 Swift SDK, Android NDK를 설치해야 합니다. 이 과정은 상당한 양의 수동 명령 실행과 cURL 사용을 포함하며, 보안을 위해 별도 환경에서 진행하는 것이 권장됩니다.

코드 분석 및 JNI 연동

swift-android-examples 저장소의 hello-swift 예제를 살펴보면, MainActivity.kt 파일은 일반적인 Android 앱과 크게 다르지 않습니다. Swift 코드는 stringFromSwift() 함수에 external 키워드를 사용하여 Kotlin 외부에 구현되어 있음을 알립니다. 실제 Swift 코드는 helloswift.swift 파일에 있으며, @_cdecl 데코레이터를 통해 Kotlin에 노출됩니다. 이 함수는 UnsafeMutablePointer<JNIEnv?>와 같은 포인터 타입을 사용하여 JNI(Java Native Interface)를 통해 Android와 상호작용하며, 이는 Objective-C 이후로 직접 포인터를 다루지 않았던 개발자에게는 복잡하게 느껴질 수 있습니다.

현재의 한계점 및 장기 비전

현재 Swift for Android는 주로 Swift로 작성된 비즈니스 로직을 공유하는 데 초점을 맞추고 있습니다. Hotwire Native 앱의 경우 비즈니스 로직이 이미 Rails 앱 서버에 존재하므로 이점은 크지 않습니다. 또한, 현재의 Swift-Android 연동 코드는 복잡하며, 저자는 Kotlin 코드보다 선호하지 않는다는 의견을 피력합니다. 장기적인 비전에서도 Swift for Android 애플리케이션의 UI는 주로 Android의 네이티브 UI 프레임워크(Jetpack Compose, Android Views) 또는 FlutterSwift와 같은 기존 크로스 플랫폼 솔루션, 혹은 Skip.tools와 같은 브리징 솔루션에 의존할 것으로 예상됩니다. 즉, Swift만으로 크로스 플랫폼 UI를 구축하는 것은 아직 요원합니다.

결론

현재 Swift for Android는 Hotwire Native 프로젝트에 즉시 도입하기에는 시기상조라는 결론입니다. 복잡한 JNI 연동 코드와 크로스 플랫폼 UI 솔루션의 부재가 주요 원인입니다. 하지만 장기적으로는 네이티브 인증 흐름이나 인앱 구매 로직과 같은 특정 기능을 위한 단일 패키지를 공유하거나, Hotwire Native 프레임워크 자체의 기반 코드를 단일 언어로 통합하는 데 기여할 가능성은 있습니다. 그러나 이러한 목표를 위해서는 Kotlin Multiplatform이 현재로서는 더 안정적이고 성숙한 대안으로 평가됩니다. 필자는 궁극적으로 Ruby Motion의 부활을 바란다는 의견을 덧붙이며, 크로스 플랫폼 도구에 대한 지속적인 관심을 촉구합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!