Spark er en af de mest populære e-mail-apps, der er tilgængelige gratis på iPhone, iPad, Mac samt Apple-ur. For de millioner af brugere på Android-platformen er det tidspunkt, hvor Spark hjælper dig med at elske din e-mail, ikke meget langt. I mellemtiden vil vi dele med dig en utrolig ny toolchain, vi har oprettet, der tager smerten og besværet ud af at arbejde med hurtig til Android. Denne toolchain hjælper dev-teams med at bruge den kode, de har skrevet til iOS-eller Mac-platformene, til at skabe fantastiske Android-applikationer.

Apples hurtige kompilator har haft evnen til at kompilere kode til Android-platformen i et par år nu, men det har ikke fået mange venner i udviklerfællesskabet på grund af dets kompleksitet. Vores toolchain er designet til at løse dette problem ved at tage kompleksiteten og hovedpine ud af processen, så du kan fokusere på at opbygge gode apps til dine brugere.

da vi begyndte at arbejde på udviklingen af Android-versionen af Spark, ledte vi efter et sprog på tværs af platforme, der kunne bruges til både Android & iOS-udvikling og også ville være let at migrere fra vores eksisterende Objective-C-kodebase.

det var omkring dette tidspunkt, at hurtig blev et open source-projekt, og efter kort tid fik det også muligheden for at kompilere kode til Android-platformen. Vi udforskede vores muligheder, og det var ret indlysende for os, at vi skulle bevæge os i den retning.

Hvordan virker Android Compiler?

svaret på det er simpelt: lavt niveau virtuel maskine.

LLVM er en kompilatorinfrastruktur, der er baseret på begreberne trefaset design med re-targetability. Enkelt sagt betyder det, at ethvert sprog, der har en front-end LLVM compiler, kan kompileres til ethvert mål, der har en LLVM backend compiler.

Google allerede gør brug af LLVM compilere til indfødte Android udvikling med C/C++. Derfor er der fra et Android-enhedsperspektiv ingen forskel i biblioteker udarbejdet fra C/C++ eller hurtig kode. Desuden er det faktisk bedre for udviklere, fordi de kan genbruge de fleste af de instrumenter, der blev oprettet til C/C++-udvikling — Android-profileringsværktøjer eller en Android-debugger på lavt niveau (med en begrænsning af en evaluering af hurtig kode).

hvilke rammer er tilgængelige?

nå…der er ikke mange. Vi har kun adgang til vores værktøjskæde. De er stort set identiske med iOS-og Mac-versioner. Men Hurtigfundament er på den anden side ikke det samme fundament, som Apple bruger til sine egne platforme; det er en re-implementering af alle klasser fra det originale bibliotek. Derfor mangler der stadig nogle funktioner, men det dækker alle grundlæggende behov som f.eks.

naturligvis er UIKit eller nogen rammer på højt niveau ikke tilgængelige, så din hurtige app til iOS kan ikke magisk køre på Android — du kan bruge hurtig til forretningslogik kode, men du bliver nødt til at omskrive alle brugergrænseflader og OS-afhængige dele specifikt til Android.

hvad er begrænsningerne i den hurtige Android-kompilator?

  • i øjeblikket understøtter den hurtige kompilator kun ARM-v7A Android-platformen.
  • mindste version af Android understøttet er v5.0 (Lollipop).
  • og en af de mest betydningsfulde begrænsninger er generation 32MB+ APK-filer, fordi build skal indeholde Hurtigkode, Hurtigfundament og libDispatch.

Introduktion til den hurtige Android Toolchain

en af de største forhindringer i at bruge Hurtig compiler til Android er manglen på officiel support fra Apple, hvilket betyder ingen kontinuerlige integrationer eller ingen officielle builds. Vi indså, at vi kunne optimere de mange af de problemer, der var til stede i udviklingen i hurtig til Android og samtidig forbedre oplevelsen for vores udviklere på dette område. Vi ønskede at undgå alle de hovedpine, som Android-udviklere typisk skal lide, når de arbejder med disse værktøjer.

derfor har vi den hurtige Android Toolchain — en samling værktøjer, der giver Android-udviklere mulighed for at bruge hurtig i deres projekter komfortabelt og uden besvær. Det er et open source-projekt baseret på Apple hurtig compiler og Hurtigtjava og Hurtigtandroid projekter. Du kan hente toolchain direkte fra Bintray (kun Mac) eller kompilere på egen hånd fra GitHub.

vi bruger i øjeblikket forked version af Hurtig. Vores gaffel indeholder mulighed for at deaktivere @objc og dynamiske funktioner i compiler, fordi det ikke fungerer korrekt på ikke- platforme. Den indeholder også nogle mindre rettelser. Vi arbejder på at kunne bruge officiel hurtig repository i fremtiden.

desuden bruger vi hurtig pakkehåndtering (SPM) som byggesystem til hurtig. Det er det build-system, som Apple bruger i compileren og andre hurtige biblioteker. Dette værktøj giver mulighed for at forbinde afhængigheder, kompilere kode, link artefakter (dynamiske biblioteker eller eksekverbare) og køre tests. Sammen med vores toolchain leverer vi scripts til SPM, der automatiserer alle processer til udvikling og test af Android-apps.

Gradle plugin

selvfølgelig er det dejligt at opbygge hurtig kode fra kommandolinjen, men det er simpelthen mere naturligt for Android-udviklere at bruge Android Studio IDE. Heldigvis bruger Android IDE et meget fleksibelt byggesystem kaldet ‘Gradle’.

vi oprettede et Gradle-plugin til tilføjelse af et hurtigt kompileringsbygningstrin. Det giver os mulighed for at opbygge blandede hurtige/Java/Kotlin-projekter med kun en knap.

JVM interoperabilitet

alle Android-applikationer kører i Java Virtual Machine. Hvis en udvikler foretrækker native code (C/C++), skal de indlæse biblioteket i en app og interagere med det via Java Native Interface (JNI). Hurtig er ingen undtagelse. For at bruge hurtig kode i JVM skal vi således indlæse bibliotekerne og skrive en JNI-bro.

det er helt op til dig, hvilket JVM-sprog (Java eller Kotlin) du bruger, og hvordan du skriver brokoden, men vi anbefaler, at du kigger på vores hurtige Annotationsprocessor, der genererer al JNI-kode fra Java-klasser og grænseflader.

Blueprint project

Android-teamet hos Readdle har oprettet en hurtig hurtig applikation til at prøve den hurtige Android Toolchain i aktion. Hvis du vil prøve hurtig til Android, er dette et fremragende projekt til at begynde med. Blueprint-projektet er en simpel to-do-app med forretningslogik skrevet hurtigt, mens brugergrænsefladen blev udført i Java.

Testing

det hurtige projekt indeholder allerede en testramme kaldet Httest, og det kan allerede bruges til at teste hurtig kode på Android-platformen. Den hurtige pakkehåndtering tillader kompilering af test i en fat binær eksekverbar; derefter kan udviklere uploade binær eksekverbar på Android-enheder og køre den via Android-skallen.

BONUS: vores toolchain automatiserer alle faser af denne testproces. Og Blueprint-projektet indeholder få enkle tests, som du kan prøve.

Hvad er det næste?

vi har stadig meget at gøre for hurtig værktøjskæde:

  • ARM64 compiler (foreløbig deadline: August 2019)
  • H86, H86_64 compiler (understøttelse af Chromebooks)
  • LLDB med hurtig support: klient og server

vi håber, at vores hurtige Android Toolchain vil hjælpe dig med at gøre din udviklingsproces nem og problemfri. Det hurtige sprog har udviklet sig meget i løbet af de sidste par år, og udviklere, der allerede koder til iOS-og Mac-platformene ved hjælp af hurtig, kan nu også nemt have Android på deres radar.

kilder

  1. Kom godt i gang med hurtig på Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. arkitekturen af Open Source-applikationer: 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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.