Spark je jednou z nejpopulárnějších e-mailových aplikací dostupných zdarma na iPhone, iPad, Mac a Apple Watch. Pro miliony uživatelů na platformě Android není čas, kdy vám Spark pomůže milovat váš e-mail, příliš daleko. Mezitím se s vámi chceme podělit o neuvěřitelný nový nástrojový řetězec, který jsme vytvořili a který odstraňuje bolest a potíže z práce se systémem Swift pro Android. Tato sada nástrojů pomáhá týmům vývojářů využívat kód, který napsali pro platformy iOS nebo Mac, k vytváření skvělých aplikací pro Android.

kompilátor Apple Swift má schopnost kompilovat kód pro platformu Android již několik let, ale díky své složitosti se v komunitě vývojářů mnoho přátel nestalo. Náš toolchain byl navržen tak, aby tento problém vyřešil tím, že z procesu vyřadí složitost a bolesti hlavy, takže se můžete soustředit na vytváření skvělých aplikací pro své uživatele.

když jsme začali pracovat na vývoji verze Spark pro Android, hledali jsme multiplatformní jazyk, který by mohl být použit pro vývoj iOS pro Android & a také by bylo snadné migrovat z naší stávající kódové základny Objective-C.

to bylo kolem této doby, že Swift se stal open-source projekt a po krátké době, to také dostal schopnost sestavit kód pro platformu Android. Prozkoumali jsme naše možnosti a bylo nám docela jasné, že bychom se měli pohybovat tímto směrem.

jak Swift Android kompilátor práce?

odpověď na to je jednoduchá: nízkoúrovňový virtuální stroj.

LLVM je kompilátorová infrastruktura, která je založena na konceptech třífázového návrhu s re-targetabilitou. Zjednodušeně to znamená, že jakýkoli jazyk, který má front-end LLVM kompilátor lze zkompilovat pro jakýkoli cíl, který má LLVM backend kompilátor.

Google již využívá LLVM kompilátory pro nativní vývoj Android S C / C++. Proto z pohledu zařízení Android není žádný rozdíl v knihovnách kompilovaných z kódu C/C++ nebo Swift. Navíc je to vlastně lepší pro vývojáře, protože mohou znovu použít většinu nástrojů, které byly vytvořeny pro vývoj C / C++ – nástroje pro profilování Android nebo debugger nízké úrovně Android(s omezením na vyhodnocení kódu swift).

jaké rámce jsou k dispozici?

No … není jich mnoho. Máme přístup pouze k SwiftCore, Dispatch a SwiftFoundation v našem toolchain. SwiftCore a Dispatch jsou do značné míry totožné s verzemi iOS a Mac. Ale SwiftFoundation na druhé straně není stejný základ, který Apple používá pro své vlastní platformy; je to re-implementace všech tříd z původní knihovny. Proto SwiftFoundation stále chybí některé funkce, ale pokrývá všechny základní potřeby, jako je provádění síťových požadavků,analýza JSON / XML, ukládání dat na disk atd.

je zřejmé, že UIKit nebo jakékoli rámce na vysoké úrovni nejsou k dispozici, takže vaše aplikace Swift pro iOS nemůže magicky běžet na Androidu — můžete použít Swift pro kód obchodní logiky, ale budete muset přepsat všechny části závislé na uživatelském rozhraní a OS speciálně pro Android.

jaká jsou omezení Překladače Swift Android?

  • v současné době kompilátor Swift podporuje pouze platformu Android ARM-v7A.
  • minimální verze Android podporován je v5.0 (lízátko).
  • a jedním z nejvýznamnějších omezení je generace 32MB + APK souborů, protože sestavení by mělo zahrnovat SwiftCode, SwiftFoundation a libDispatch.

Představujeme Swift Android Toolchain

jednou z největších překážek při používání Swift compiler pro Android je nedostatek oficiální podpory od společnosti Apple, což znamená, že žádné kontinuální integrace nebo žádné oficiální sestavení. Uvědomili jsme si, že bychom mohli optimalizovat mnoho potíží, které se vyskytují při vývoji ve Swiftu pro Android, a zároveň zlepšit zážitek pro naše vývojáře v této oblasti. Chtěli jsme se vyhnout všem bolestem hlavy, které vývojáři Androidu obvykle musí trpět při práci s těmito nástroji.

to je důvod, proč máme Swift Android Toolchain-sbírku nástrojů, které dává vývojářům Androidu možnost používat Swift ve svých projektech pohodlně a bez potíží. Jedná se o open-source projekt založený na Apple Swift compiler a SwiftJava a SwiftAndroid projekty. Toolchain si můžete stáhnout přímo z Bintray (pouze Mac) nebo kompilovat sami z GitHubu.

v současné době používáme vidlicovou verzi Swift. Naše vidlice obsahuje možnost zakázat @objc a dynamické funkce v kompilátoru, protože nefunguje správně na platformách jiných než Darwin. Obsahuje také některé drobné opravy. Pracujeme na tom, abychom mohli v budoucnu používat oficiální úložiště Swift.

kromě toho používáme Swift Package Manager (SPM) jako systém sestavení pro Swift. Je to systém sestavení, který Apple používá v kompilátoru a dalších knihovnách Swift. Tento nástroj umožňuje připojení závislostí, kompilaci kódu, artefakty odkazů (dynamické knihovny nebo spustitelné soubory) a spouštění testů. Spolu s naším toolchainem poskytujeme skripty pro SPM, které automatizují všechny procesy vývoje a testování aplikací pro Android.

Gradle plugin

samozřejmě je skvělé vytvořit Swift kód z příkazového řádku,ale pro vývojáře Androidu je prostě přirozenější používat Android Studio IDE. Naštěstí Android IDE používá velmi flexibilní systém sestavení s názvem „Gradle“.

vytvořili jsme Gradle plugin pro přidání kroku sestavení Swift compilation. To nám dává možnost vytvářet smíšené Swift / Java / Kotlin projekty s pouhým jedním tlačítkem.

JVM interoperabilita

všechny aplikace pro Android běží ve virtuálním stroji Java. V případě, že některý vývojář preferuje nativní kód (C / C++), musí načíst knihovnu uvnitř aplikace a komunikovat s ní prostřednictvím Java Native Interface (JNI). Swift není výjimkou. Pro použití Swift kódu v JVM bychom tedy měli načíst knihovny a napsat JNI bridge.

je zcela na vás, jaký jazyk JVM (Java nebo Kotlin) používáte a jak píšete překlenovací kód, ale doporučujeme vám podívat se na náš anotační procesor Swift, který generuje veškerý kód JNI z tříd a rozhraní Java.

Blueprint project

tým Android v Readdle vytvořil ukázkovou aplikaci Swift pro vyzkoušení Swift Android Toolchain v akci. Pokud si chcete vyzkoušet Swift pro Android,je to skvělý projekt. Projekt Blueprint je jednoduchá aplikace s obchodní logikou napsaná v Swift, zatímco uživatelské rozhraní bylo provedeno v Javě.

testování

Projekt Swift již obsahuje testovací rámec nazvaný XCTest a může být již použit pro testování kódu Swift na platformě Android. Správce balíčků Swift umožňuje kompilaci testů v jednom binárním spustitelném souboru fat; poté mohou vývojáři Nahrát binární spustitelný soubor na zařízení Android a spustit jej přes shell Android.

BONUS: náš toolchain automatizuje všechny fáze tohoto testovacího procesu. A projekt Blueprint obsahuje několik jednoduchých testů, které můžete vyzkoušet.

co bude dál?

stále máme co dělat pro Swift toolchain:

  • ARM64 compiler (předběžný termín: srpen 2019)
  • x86, x86_64 compiler (podpora Chromebooků)
  • LLDB s podporou Swift: klient a server

doufáme, že naše Swift Android Toolchain vám pomůže při vytváření procesu vývoje snadné a bezproblémové. Jazyk Swift se v posledních několika letech velmi vyvíjí a vývojáři, kteří již kódují platformy iOS a Mac pomocí Swift, mohou nyní snadno mít Android na svém radaru.

zdroje

  1. Začínáme s Swift na Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. Architektura Open Source aplikací: 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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.