19P by neo 2달전 | favorite | 댓글 3개
  • Skip은 Swift 앱 개발을 Android로 확장할 수 있게 해주는 도구
  • Swift와 Xcode를 사용하여 iOS와 Android에서 모두 네이티브 앱을 개발할 수 있음
  • Skip의 작동 방식
    • Xcode에서 Swift 및 SwiftUI 앱을 개발하면, Skip Xcode 플러그인이 이를 Kotlin 및 Jetpack Compose로 변환
    • 네이티브 성능과 사용자 인터페이스를 유지하면서 두 플랫폼에서 라이브러리나 전체 앱을 개발할 수 있음

Skip 앱의 장점

진정한 네이티브

  • Skip 앱은 단순히 "네이티브처럼 보이는" 것이 아니라 실제로 네이티브임
  • iOS에서는 Swift와 SwiftUI, Android에서는 Kotlin과 Compose를 사용함

완전한 투명성

  • Skip을 사용하면 앱의 모든 부분이 개발자에게 노출됨
  • Swift 코드를 직접 Kotlin 소스 코드로 변환하여 검사하고 커스터마이징할 수 있음

경량성

  • SkipZero를 사용하면 iOS 앱은 Skip 프레임워크에 의존하지 않음
  • Android 앱은 몇 가지 Skip 오픈 소스 라이브러리만 필요함

메모리 효율성

  • 추가적인 관리 런타임이 없기 때문에 Skip 앱은 두 플랫폼에서 가능한 한 효율적임
  • iOS에서는 베어 메탈, Android에서는 ART 바이트코드를 사용함

이상적인 IDE

  • Skip의 IDE는 iOS 개발을 위한 최고의 환경인 Xcode임
  • Android 커스터마이징을 위해 생성된 코드를 Android Studio에서 직접 열 수 있음

완벽한 통합

  • Skip은 표준 Kotlin과 Compose를 생성하므로 Android 라이브러리와의 통합이 쉬움
  • 다른 Kotlin 및 Java 코드를 직접 호출할 수 있음

오픈 소스 기반

  • Skip의 트랜스파일러는 이야기의 절반에 불과함
  • iOS 앱 개발을 뒷받침하는 Foundation 및 SwiftUI와 같은 프레임워크가 Skip의 무료 오픈 소스 구현을 통해 Android에서도 사용 가능함

CI 친화적

  • Skip은 단위 테스트도 변환함
  • 로컬 또는 원격으로 테스트를 실행하여 플랫폼 간 동일한 로직 성능을 보장할 수 있음

탈출 가능성

  • Swift 입력과 Kotlin 출력 모두 개발자의 소유임
  • Skip 트랜스파일러에 지속적으로 의존하지 않아도 됨

GN⁺의 정리

  • Skip은 Swift 앱을 Android로 확장할 수 있게 해주는 도구로, 두 플랫폼에서 네이티브 성능과 사용자 인터페이스를 유지할 수 있음
  • Xcode와 Android Studio를 모두 활용하여 개발자가 더 효율적으로 작업할 수 있게 함
  • 오픈 소스 기반으로 투명성과 커스터마이징 가능성을 제공함
  • CI 친화적이며, 테스트를 통해 플랫폼 간 동일한 성능을 보장할 수 있음
  • 유사한 기능을 제공하는 프로젝트로는 Kotlin Multiplatform이 있음

코드 난독화도 지원하게된다면 되게 좋을거같네요

오호 흥미롭네요. 얼마나 어떻게 처리되는지 아직 전혀 모르겠지만 무모하면서도 재밌는 시도 같습니다

Hacker News 의견
  • 개인 앱을 Android로 이식하려는 경험 공유

    • SwiftUI로 iOS 앱을 개발 중이며, Android 버전으로 이식하려고 React Native, Ionic, Ignite 등을 시도했으나 어려움이 있었음
    • Skip을 사용해보니 Swift 문맥을 유지하면서 하나의 언어로 앱을 작성할 수 있어 매우 만족스러움
    • 플랫폼별 코드 작성이 쉬우며, Android를 배우지 않고도 빠르게 앱을 실행할 수 있음
    • 전체 앱을 Skip으로 개발해 양쪽 앱 스토어에 배포할 계획임
  • Skip에 대한 우려 사항

    • 오픈 소스 라이선스에 대한 의문 (GPL vs MIT)
    • 패키지 관리와 iOS/Android 분기 처리 방법에 대한 궁금증
    • Apple 서비스 API가 Android에서 어떻게 처리되는지에 대한 의문
    • 광고 및 인앱 결제 예제의 필요성
  • Skip의 의존성 관리에 대한 질문

    • Swift PM 패키지를 Android 프로젝트에서 투명하게 사용할 수 있는지에 대한 의문
    • Kotlin이 Swift 라이브러리를 투명하게 호출할 수 있는지 궁금함
  • Skip의 타겟 시장에 대한 의견

    • 주로 iOS 앱을 Android로 변환하려는 미국/유럽 기업을 대상으로 하는 제품으로 보임
    • Android가 주류인 다른 지역에서는 Flutter, React Native, Kotlin MP 같은 더 나은 프레임워크가 존재함
    • Skip의 트랜스파일링 문제와 유지보수의 어려움 지적
  • ChatGPT와 Claude를 사용한 코드 변환 경험

    • SwiftUI 코드를 Kotlin, Jetpack Compose, Material3로 변환하는 데 성공적이었음
    • 생성된 코드가 거의 즉시 작동했으며, 스타일링/테마 수정만 필요했음
  • Skip 사용 경험 공유

    • 몇 달간 사용해본 결과, 학습 곡선이 있지만 크로스 플랫폼 문제를 완전히 해결함
  • Skip의 문서와 트랜스파일링의 한계

    • SwiftUI나 다른 핵심 라이브러리 사용 시 트랜스파일링의 한계가 있는지 궁금함
    • Xamarin 개발의 어려움과 유사한 문제 발생 가능성
  • Skip의 프레임워크 제한

    • 대부분의 iOS 앱이 Apple 플랫폼 프레임워크를 사용하므로 Skip의 최소 구현이 제한적일 수 있음
    • StoreKit, WebKit, SafariServices, UserNotifications, CryptoKit 등의 현재 구현이 없음
  • 기존 앱과 Skip 통합의 어려움

    • 기존 SwiftUI + UIKit 앱과 Skip 통합이 어려운지에 대한 질문
    • 작은 또는 중간 크기의 앱이 Skip으로 마이그레이션된 예제 필요성
  • Skip의 성능 문제 해결

    • 크로스 플랫폼 프레임워크의 성능 문제를 해결하는 데 큰 도움이 됨