a Spark az egyik legnépszerűbb e-mail alkalmazás, amely ingyenesen elérhető iPhone, iPad, Mac, valamint Apple Watch készülékeken. Az Android platform több millió felhasználója számára az az idő, amikor a Spark segít szeretni az e-mailt, nincs túl messze. Addig is szeretnénk megosztani veletek egy hihetetlen új eszközlánc hoztunk létre, hogy veszi a fájdalmat és szóváltás ki dolgozik Swift Android. Ez az eszközlánc segít a dev csapatoknak az iOS vagy Mac platformokra írt kód felhasználásában, hogy nagyszerű Android-alkalmazásokat hozzanak létre.

az Apple Swift fordító már néhány éve képes volt kódot fordítani az Android platformra, de összetettsége miatt nem sok barátot szerzett a fejlesztői közösségben. A toolchain célja az volt, hogy megoldja ezt a problémát azáltal, hogy a komplexitás és a fejfájás ki a folyamat, így összpontosítani épület nagy apps a felhasználók számára.

amikor elkezdtünk dolgozni a Spark Android verziójának fejlesztésén, egy olyan cross-platform nyelvet kerestünk, amely mind az Android & iOS fejlesztéshez használható, mind pedig a meglévő Objective-C kódbázisról könnyen áttelepíthető.

ekkortájt vált a Swift nyílt forráskódú projektté, és rövid idő után az Android platform kódjának fordítására is képes lett. Megvizsgáltuk a lehetőségeinket, és elég nyilvánvaló volt számunkra, hogy ebbe az irányba kell elmozdulnunk.

hogyan működik a Swift Android fordító?

a válasz erre egyszerű: alacsony szintű virtuális gép.

az LLVM egy fordító infrastruktúra, amely a háromfázisú tervezés koncepcióin alapul, újracélozhatósággal. Egyszerűen fogalmazva, ez azt jelenti, hogy minden olyan nyelv, amely rendelkezik front-end LLVM fordítóval, lefordítható bármely olyan célra, amely rendelkezik LLVM háttérfordítóval.

a Google már él LLVM fordítóprogramok natív Android fejlesztés C / C++. Ezért Android-eszköz szempontjából nincs különbség a C/C++ vagy Swift kódból összeállított könyvtárakban. Sőt, valójában jobb a fejlesztők számára, mert újra felhasználhatják a C/C++ fejlesztéshez létrehozott eszközök nagy részét-Android profilozó eszközöket vagy Android alacsony szintű hibakeresőt (a swift kód értékelésének korlátozásával).

milyen keretek állnak rendelkezésre?

Nos…nincs sok. Csak a swiftcore-hoz, a Dispatch-hez és a SwiftFoundation-hoz férünk hozzá eszközláncunkban. A SwiftCore és a Dispatch nagyjából megegyezik az iOS és a Mac verziókkal. De a SwiftFoundation viszont nem ugyanaz az alap, amelyet az Apple a saját platformjaihoz használ; ez az eredeti könyvtár összes osztályának újbóli megvalósítása. Ezért hiányzik a SwiftFoundation néhány funkciója, de minden alapvető igényt lefed, mint például a hálózati kérések végrehajtása, a JSON/XML elemzése, az adatok lemezen történő tárolása stb.

nyilvánvaló, hogy az UIKit vagy bármely magas szintű keretrendszer nem érhető el, így az iOS — hez készült Swift alkalmazás nem tud varázslatosan futni Androidon-használhatja a Swift for business logic kódot, de újra kell írnia az összes felhasználói felületet és az operációs rendszertől függő részeket kifejezetten az Android számára.

milyen korlátai vannak a Swift Android fordítónak?

  • jelenleg a Swift fordító csak az ARM-v7A Android platformot támogatja.
  • az Android támogatott minimális verziója v5.0 (Lollipop).
  • és az egyik legjelentősebb korlátozás a 32 MB+ APK fájlok generálása, mivel a buildnek tartalmaznia kell a SwiftCode, a SwiftFoundation és a libDispatch fájlokat.

bemutatjuk a Swift Android Toolchain

az egyik legnagyobb akadályt a Swift fordító Android hiánya hivatalos támogatást az Apple, ami azt jelenti, nincs folyamatos integrációk vagy nincs hivatalos épít. Rájöttünk, hogy optimalizálhatjuk a Swift for Android fejlesztésében rejlő sok problémát, ugyanakkor javíthatjuk fejlesztőink tapasztalatait ezen a területen. El akartuk kerülni az összes fejfájást, amelyet az Android fejlesztőknek általában szenvedniük kell, amikor ezekkel az eszközökkel dolgoznak.

ezért van a Swift Android Toolchain — olyan eszközök gyűjteménye, amelyek lehetővé teszik az Android fejlesztők számára, hogy kényelmesen és gond nélkül használják a Swift-et projektjeikben. Ez egy nyílt forráskódú projekt, amely az Apple Swift compiler és a SwiftJava és a SwiftAndroid projekteken alapul. Letöltheti az eszközláncot közvetlenül a Bintray – ből (csak Mac esetén), vagy összeállíthatja saját maga a Githubról.

jelenleg a Swift villás verzióját használjuk. A villa tartalmaz lehetőséget, hogy tiltsa @objc és dinamikus funkciók fordító, mert nem működik megfelelően a nem Darwin platformokon. Néhány kisebb javítást is tartalmaz. Azon dolgozunk, hogy a jövőben használni tudjuk a hivatalos Swift adattárat.

továbbá a Swift csomagkezelőt (SPM) használjuk a Swift build rendszereként. Ez az a build rendszer, amelyet az Apple használ a fordítóban és más Swift könyvtárakban. Ez az eszköz lehetővé teszi függőségek összekapcsolását, kód fordítását, melléktermékek (dinamikus könyvtárak vagy végrehajtható fájlok) összekapcsolását és tesztek futtatását. Együtt a toolchain, biztosítunk szkriptek SPM, amely automatizálja az összes folyamatot a fejlesztés és tesztelés Android apps.

Gradle plugin

természetesen nagyszerű a Swift kódot a parancssorból felépíteni, de az Android fejlesztők számára egyszerűen természetesebb az Android Studio IDE használata. Szerencsére az Android IDE egy nagyon rugalmas, Gradle nevű build rendszert használ.

létrehoztunk egy Gradle plugint egy gyors összeállítás összeállításának hozzáadásához. Ez lehetővé teszi számunkra, hogy egyetlen gombnyomással vegyes Swift/Java/Kotlin projekteket építsünk.

JVM interoperabilitás

minden Android alkalmazás a Java virtuális gépen fut. Ha bármelyik fejlesztő a natív kódot (C/C++) részesíti előnyben, akkor be kell töltenie a könyvtárat egy alkalmazásba, és a Java Native Interface (JNI) segítségével kell interakcióba lépnie vele. A Swift sem kivétel. Így a Swift kód JVM-ben való használatához be kell töltenünk a könyvtárakat, és írnunk kell egy JNI hidat.

teljesen rajtad múlik, hogy milyen JVM nyelvet (Java vagy Kotlin) használsz, és hogyan írod az áthidaló kódot, de javasoljuk, hogy nézd meg Swift annotációs processzorunkat, amely az összes JNI kódot generálja a Java osztályokból és interfészekből.

Blueprint project

az Android csapat Readdle létrehozott egy mintát Swift alkalmazás kipróbálására A Swift Android Toolchain akcióban. Ha ki akarja próbálni a Swift for Android alkalmazást,akkor ez egy kiváló projekt. A Blueprint projekt egy egyszerű, üzleti logikával rendelkező alkalmazás, Swift-ben írva, míg a felhasználói felület Java-ban készült.

tesztelés

a Swift projekt már tartalmaz egy xctest nevű tesztelési keretet, amely már használható Swift kód tesztelésére Android platformon. A Swift csomagkezelő lehetővé teszi a tesztek összeállítását egy fat bináris futtatható fájlban; ezt követően a fejlesztők feltölthetik a bináris futtatható fájlokat Android készülékekre, és futtathatják az Android shell-en keresztül.

bónusz: eszközláncunk automatizálja a tesztelési folyamat minden szakaszát. A Blueprint projekt pedig néhány egyszerű tesztet tartalmaz, amelyeket kipróbálhat.

mi a következő lépés?

még mindig sok tennivalónk van a Swift toolchain számára:

  • ARM64 fordító (előzetes határidő: 2019. augusztus)
  • X86, X86_64 fordító (Chromebookok támogatása)
  • LLDB Swift Támogatással: kliens és szerver

reméljük, hogy a Swift Android Toolchain segít abban, hogy a fejlesztési folyamat egyszerű és problémamentes. A Swift nyelv nagymértékben fejlődött az elmúlt néhány évben, és a fejlesztők, akik már kódolják az iOS és Mac platformokat a Swift használatával, most már könnyen Androidot is használhatnak a radarjukon.

források

  1. első lépések a Swift Androidon https://github.com/apple/swift/blob/master/docs/Android.md
  2. a nyílt forráskódú alkalmazások architektúrája: 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

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.