스파크는 아이폰,아이 패드,맥에서 무료로 사용할 수있는 가장 인기있는 이메일 애플 리케이션 중 하나뿐만 아니라 애플 시계입니다. 안드로이드 플랫폼에서 사용자의 수백만,스파크는 당신이 당신의 이메일을 사랑하는 데 도움이 시간은 아주 멀리하지 않습니다. 그 동안,우리는 당신과 함께 우리가 만든 놀라운 새로운 툴체인을 공유 할 그 안드로이드에 대한 스위프트 작업에서 고통과 번거 로움을 걸립니다. 이 툴체인은 개발 팀이 이오스 또는 맥 플랫폼을 위해 작성한 코드를 활용하여 훌륭한 안드로이드 응용 프로그램을 만들 수 있도록 도와줍니다.

애플 스위프트 컴파일러는 몇 년 동안 안드로이드 플랫폼 용 코드를 컴파일 할 수 있었지만 복잡성으로 인해 개발자 커뮤니티에서 많은 친구를 사귀지 못했습니다. 툴체인은 프로세스의 복잡성과 문제를 해결하여 이 문제를 해결하도록 설계되었으므로 사용자를 위한 훌륭한 앱을 구축하는 데 집중할 수 있습니다.

우리는 스파크의 안드로이드 버전의 개발 작업을 시작했을 때,우리는 모두 안드로이드&에 사용할 수있는 크로스 플랫폼 언어를 찾고 있었다.

이 무렵 스위프트는 오픈 소스 프로젝트가되었고 잠시 후 안드로이드 플랫폼을위한 코드를 컴파일 할 수있었습니다. 우리는 우리의 옵션을 탐구 하 고 우리가 그 방향으로 이동 해야 우리에 게 꽤 분명 했다.

스위프트 안드로이드 컴파일러는 어떻게 작동합니까?

그 대답은 간단하다:낮은 수준의 가상 머신.

컴파일러 인프라스트럭처 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다.

이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다.. 그 이유는,안드로이드 장치의 관점에서,씨/씨++또는 스위프트 코드에서 컴파일 된 라이브러리에 차이가 없다. 안드로이드 프로파일 링 도구 또는(스위프트 코드의 평가에 대한 제한)안드로이드 낮은 수준의 디버거-또한,개발자를위한 실제로 더 낫다.

어떤 프레임 워크를 사용할 수 있습니까?

음…많지 않습니다. 우리는 툴체인에서 스위프트 코어,디스패치 및 스위프트 파운데이션에 액세스 할 수 있습니다. 그 결과,그 결과,그 결과는 다음과 같습니다. 그러나 스위프트 파운데이션은 다른 한편으로는 애플이 자체 플랫폼에 사용하는 것과 동일한 기반이 아니다;그것은 원래 라이브러리에서 모든 클래스의 재 구현이다. 하지만 네트워크 요청 수행,구문 분석,디스크에 데이터 저장 등과 같은 모든 기본 요구 사항을 다룹니다.당신은 비즈니스 로직 코드에 대한 스위프트를 사용할 수 있습니다—하지만 당신은 특히 안드로이드에 대한 모든 사용자 인터페이스 및 운영 체제 종속 부분을 다시 작성해야합니다.

스위프트 안드로이드 컴파일러의 한계는 무엇입니까?

  • 지금이 순간,스위프트 컴파일러는 안드로이드 플랫폼을 지원합니다.지원되는 안드로이드의 최소 버전은 5.0(롤리팝)입니다.이 문제를 해결하기 위해 몇 가지 간단한 단계를 수행 할 수 있습니다.

스위프트 안드로이드 툴체인 소개

안드로이드에 대한 스위프트 컴파일러를 사용하는 데있어 가장 큰 장애물 중 하나는 애플의 공식 지원이 부족하다는 것인데,이는 지속적인 통합이나 공식 빌드가 없음을 의미합니다. 우리는 우리가이 분야에서 우리의 개발자에 대한 경험을 개선,안드로이드에 대한 스위프트와 동시에 개발에 존재하는 번거 로움의 많은 최적화 할 수 있다는 것을 깨달았다. 우리는 안드로이드 개발자가 일반적으로 이러한 도구를 사용하여 작업 할 때 고통을해야하는 모든 두통을 피하고 싶었다.

안드로이드 개발자들에게 편안하고 번거 로움없이 자신의 프로젝트에 스위프트를 사용할 수있는 기능을 제공하는 도구의 모음—우리는 스위프트 안드로이드 툴체인이 이유입니다. 그것은 애플 스위프트 컴파일러와 스위프트 자바 및 스위프트 앤 로이드 프로젝트를 기반으로 오픈 소스 프로젝트입니다. 빈트레이에서 직접 툴체인을 다운로드하거나 깃허브에서 직접 컴파일할 수 있습니다.

우리는 현재 스위프트의 포크 버전을 사용하고 있습니다. 그것은 비 다윈 플랫폼에서 제대로 작동하지 않기 때문에 우리의 포크는 컴파일러에서@객체 및 동적 기능을 사용하지 않도록 설정하는 옵션이 포함되어 있습니다. 또한 몇 가지 사소한 수정 사항이 포함되어 있습니다. 우리는 미래에 공식 스위프트 저장소를 사용할 수있는 최선을 다하고 있습니다.

또한 스위프트의 빌드 시스템으로 스위프트 패키지 관리자를 사용합니다. 그것은 애플이 컴파일러 및 기타 스위프트 라이브러리에서 사용하는 빌드 시스템입니다. 이 도구는 종속성을 연결하고,코드를 컴파일하고,아티팩트(동적 라이브러리 또는 실행 파일)를 연결하고 테스트를 실행하는 기능을 제공합니다. 우리의 툴체인과 함께,우리는 개발 및 테스트 안드로이드 애플 리케이션의 모든 프로세스를 자동화 할 수 있습니다.

그래들 플러그인

물론,명령 줄에서 스위프트 코드를 구축 할 좋아요,하지만 안드로이드 개발자가 안드로이드 스튜디오 아이디를 사용하는 것이 단순히 더 자연입니다. 다행히 안드로이드 이데는’그라들’이라는 매우 유연한 빌드 시스템을 사용합니다.

신속한 컴파일 빌드 단계를 추가하기 위한 그래들 플러그인을 만들었습니다. 그것은 우리에게 하나의 버튼으로 혼합 스위프트/자바/코 틀린 프로젝트를 구축 할 수있는 기능을 제공합니다.

상호 운용성

모든 안드로이드 응용 프로그램은 자바 가상 머신에서 실행됩니다. 이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다.. 스위프트도 예외는 아니다. 이 라이브러리는 특정 실행 프로세스에서 불러오거나 실행될 수 있습니다그러나 자바 클래스와 인터페이스에서 모든 코드를 생성하는 스위프트 어노테이션 프로세서를 살펴보는 것이 좋습니다.

청사진 프로젝트

리들 안드로이드 팀은 행동에 스위프트 안드로이드 툴체인을 시도하기위한 샘플 스위프트 응용 프로그램을 만들었습니다. 당신이 안드로이드에 대한 스위프트를 시도 할 경우,이 시작하는 훌륭한 프로젝트입니다. 블루프린트 프로젝트는 스위프트로 작성된 비즈니스 로직과 간단한 할 일 응용 프로그램입니다.

테스트

스위프트 프로젝트는 이미 엑스씨 테스트라는 테스트 프레임 워크를 포함하고 이미 안드로이드 플랫폼에서 스위프트 코드를 테스트하는 데 사용할 수 있습니다. 스위프트 패키지 관리자는 하나의 지방 이진 실행에서 테스트를 컴파일 할 수 있습니다;그 후,개발자는 안드로이드 장치에 이진 실행 파일을 업로드하고 안드로이드 쉘을 통해 실행할 수 있습니다.

보너스:툴체인은 이 테스트 프로세스의 모든 단계를 자동화합니다. 그리고 청사진 프로젝트는 당신이 시도 할 수있는 몇 가지 간단한 테스트가 포함되어 있습니다.

다음은?

우리는 아직 할 수있는 많은 Swift toolchain:

  • ARM64 컴파일러(예정 deadline:August2019)
  • 86,X86_64 컴파일러(Chromebook 지원)
  • 런타임 라이브러리가 들어와 신속한 지원: 클라이언트 및 서버

우리는 우리의 스위프트 안드로이드 툴체인이 개발 프로세스를 쉽고 번거 로움없이 만드는 데 도움이되기를 바랍니다. 스위프트 언어는 지난 몇 년 동안 크게 발전해 왔으며 이미 스위프트를 사용하여 이오스와 맥 플랫폼을 코드화 한 개발자는 이제 안드로이드를 레이더에 쉽게 가질 수 있습니다.

소스

  1. 안드로이드 스위프트 시작하기https://github.com/apple/swift/blob/master/docs/Android.md
  2. 오픈 소스 애플리케이션의 아키텍처: LLVM http://www.aosabook.org/en/llvm.html
  3. Swift Android Toolchain https://github.com/readdle/swift-android-toolchain
  4. Swift Android Buildtools https://github.com/readdle/swift-android-buildtools
  5. Gradle plugin for building Swift code for Android https://github.com/readdle/swift-android-gradle
  6. Swift Java Code generation annotation processor https://github.com/readdle/swift-java-codegen
  7. Swift Android Blueprint project https://github.com/readdle/swift-android-architecture

답글 남기기

이메일 주소는 공개되지 않습니다.