Spark Er En Av de mest populære e-postappene som er Tilgjengelige Gratis På iPhone, iPad, Mac og Apple Watch. For millioner av brukere På Android-plattformen, Er Tiden Da Spark hjelper deg med å elske e-posten din ikke veldig langt. I mellomtiden vil vi dele med deg en utrolig ny verktøykjede vi har opprettet som tar smerten og problemene ut av Å jobbe Med Swift For Android. Denne verktøykjeden hjelper dev-teamene med å bruke koden de har skrevet for iOS-eller Mac-plattformene for å lage flotte Android-applikasjoner.

Apple Swift-kompilatoren har hatt muligheten til Å kompilere kode For Android-plattformen i noen år nå, men Det har ikke gjort mange venner i utviklermiljøet på grunn av sin kompleksitet. Vår verktøykjede ble designet for å løse dette problemet ved å ta kompleksiteten og hodepine ut av prosessen, slik at du kan fokusere på å bygge gode apper for brukerne dine.

Da Vi begynte å jobbe med utviklingen Av Android-versjonen Av Spark, lette vi etter et plattformspråk som kunne brukes til Både Android & iOS-utvikling og ville også være lett å migrere fra vår eksisterende Objective-C-kodebase.

Det var rundt Denne tiden At Swift ble et åpen kildekode-prosjekt, og etter en kort stund fikk Det også muligheten til å kompilere kode For Android-plattformen. Vi utforsket våre alternativer, og det var ganske åpenbart for oss at vi skulle bevege oss i den retningen.

Hvordan Fungerer Swift Android Compiler?

svaret på det er enkelt: Lavnivå Virtuell Maskin.

LLVM ER en kompilator infrastruktur som er basert på begrepene tre-fase design med re-targetability. Enkelt sagt betyr dette at alle språk som har EN FRONT-end LLVM kompilator kan kompileres for alle mål som har EN LLVM backend kompilator.

Google bruker ALLEREDE LLVM-kompilatorer for innfødt Android-utvikling Med C / C++. Det er derfor, Fra Et Android – enhetsperspektiv, det er ingen forskjell i biblioteker kompilert Fra C / C++ eller Swift-kode. Videre er det faktisk bedre for utviklere, fordi de kan gjenbruke de fleste instrumentene som ble opprettet For c / C++ utvikling-Android profileringsverktøy eller En Android lavt nivå debugger (med en begrensning på en evaluering av swift-kode).

Hvilke rammer er tilgjengelige?

vel…det er ikke mange. Vi har bare tilgang Til SwiftCore, Dispatch og SwiftFoundation i vår verktøykjede. SwiftCore og Dispatch er stort sett identiske med iOS-og Mac-versjoner. Men SwiftFoundation på den annen side er Ikke Det Samme Grunnlaget Som Apple bruker For sine egne plattformer; Det er en re-implementering av alle klasser fra det opprinnelige biblioteket. Derfor Mangler SwiftFoundation fortsatt noen funksjoner, men det dekker alle grunnleggende behov som å utføre nettverksforespørsler, analysere JSON/XML, lagre data på disk, etc.

Åpenbart UIKit eller noen høyt nivå rammer er ikke tilgjengelig, så Swift app for iOS kan ikke magisk kjøre På Android – du kan bruke Swift for business logic kode, men du er nødt til å omskrive alle brukergrensesnitt og OS avhengige deler spesielt For Android.

hva er begrensningene Til Swift Android-Kompilatoren?

  • For øyeblikket Støtter Swift-kompilatoren BARE ARM – V7a Android-plattformen.
  • Minimum versjon Av Android støttes er v5. 0 (Lollipop).
  • og en av de viktigste begrensningene er generasjon 32MB + APK-filer, fordi build bør inkludere SwiftCode, SwiftFoundation, og libDispatch.

Vi Presenterer Swift Android Toolchain

en av de største hindrene i Å bruke Swift compiler For Android er mangelen på offisiell støtte Fra Apple, noe som betyr ingen kontinuerlige integrasjoner eller ingen offisielle bygg. Vi innså at vi kunne optimalisere de mange problemene som er tilstede i Utviklingen I Swift For Android, og samtidig forbedre opplevelsen for våre utviklere på dette området. Vi ønsket å unngå alle hodepine Som Android-utviklere vanligvis må lide når de jobber med disse verktøyene.

Derfor har Vi Swift Android Toolchain – en samling verktøy som gir Android-utviklere muligheten til å bruke Swift i sine prosjekter komfortabelt og uten problemer. Det er en åpen kildekode-prosjekt basert På Apple Swift compiler Og SwiftJava og SwiftAndroid prosjekter. Du kan laste ned toolchain direkte fra Bintray (Kun Mac) eller kompilere på Egen hånd Fra GitHub.

Vi bruker for øyeblikket gaffelversjon Av Swift. Vår gaffel inneholder muligheten til å deaktivere @ objc og dynamiske funksjoner i kompilatoren fordi det ikke fungerer på ikke-Darwin plattformer. Den inneholder også noen mindre reparasjoner. Vi jobber med å kunne bruke offisielle Swift repository i fremtiden.

Videre bruker Vi Swift Package Manager (SPM) som byggesystem For Swift. Det er byggesystemet Som Apple bruker I kompilatoren Og Andre Swift-biblioteker. Dette verktøyet gir muligheten til å koble avhengigheter, kompilere kode, link artefakter (dynamiske biblioteker eller kjørbare) og kjøre tester. Sammen med vår verktøykjede gir VI skript FOR SPM som vil automatisere alle prosesser for utvikling Og testing Av Android-apper.

Gradle plugin

selvfølgelig er Det flott å bygge Swift-kode fra kommandolinjen, men Det er rett Og slett mer naturlig For Android-utviklere å bruke Android Studio IDE. Heldigvis Bruker Android IDE et veldig fleksibelt byggesystem kalt ‘Gradle’.

vi opprettet En Gradle plugin for å legge Til En Rask kompilering bygge trinn. Det gir oss muligheten til å bygge blandede Swift / Java / Kotlin prosjekter med bare en knapp.

jvm interoperabilitet

Alle Android-programmer kjører I Java Virtuell Maskin. Hvis noen utvikler foretrekker innfødt kode (C/C++), må de laste biblioteket i en app og samhandle med Det via Java Native Interface (JNI). Swift er ikke noe unntak. For å bruke Swift-kode I JVM, bør vi derfor laste bibliotekene og skrive EN jni-bro.

det er helt OPP til deg hvilket jvm-språk (Java eller Kotlin) du bruker og hvordan du skriver brokoden, men vi anbefaler at du tar en titt på Vår Swift Annotation Processor som genererer ALL jni-kode fra Java-klassene og grensesnittene.

Blueprint project

Android-teamet På Readdle har laget Et Eksempel Swift-program for å prøve Ut Swift Android Toolchain i aksjon. Hvis Du vil prøve Swift For Android, er dette et utmerket prosjekt til å begynne med. Blueprint-prosjektet er en enkel å gjøre app med forretningslogikk skrevet I Swift, mens BRUKERGRENSESNITTET ble gjort I Java.

Testing

Swift-prosjektet inneholder allerede et testrammeverk Kalt XCTest, og det kan allerede brukes til å teste Swift-kode På Android-plattformen. Swift Package Manager tillater kompilering av tester i en fat binary kjørbar; etter det kan utviklere laste opp binær kjørbar på Android-enheter og kjøre den via Android-skallet.

BONUS: vår verktøykjede automatiserer alle stadier av denne testprosessen. Og Blueprint prosjektet inneholder noen enkle tester for deg å prøve.

Hva blir det neste?

Vi har fortsatt mye Å gjøre For Swift toolchain:

  • ARM64-kompilator (foreløpig frist: August 2019)
  • X86, X86_64-kompilator (Chromebooks-støtte)
  • LLDB med Swift-støtte: klient og server

vi håper at Vår Swift Android Toolchain vil hjelpe deg med å gjøre utviklingsprosessen enkel og problemfri. Swift-språket har utviklet seg sterkt de siste par årene, og utviklere som allerede koder for iOS-og Mac-plattformene Ved Hjelp Av Swift, kan nå enkelt Ha Android på radaren også.

Kilder

  1. Komme I Gang Med Swift På Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. Arkitekturen Til Åpen Kildekode-Applikasjoner: 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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.