Spark on yksi suosituimmista sähköpostisovelluksista, jotka ovat saatavilla ilmaiseksi iPhonelle, iPadille, Macille sekä Apple Watchille. Miljoonille Android-alustan käyttäjille aika, jolloin Spark auttaa sinua rakastamaan sähköpostiasi, ei ole kovin kaukana. Sillä välin, haluamme jakaa kanssanne uskomaton Uusi toolchain olemme luoneet, joka vie kipua ja vaivaa pois työskentelystä Swift Android. Tämä työkaluketju auttaa dev-tiimejä hyödyntämään koodia, jonka he ovat kirjoittaneet iOS – tai Mac-alustoille luodakseen suuria Android-sovelluksia.

Apple Swift-kääntäjällä on ollut kyky kääntää koodia Android-alustalle jo muutaman vuoden ajan, mutta se ei ole saanut kehittäjäyhteisössä paljoa ystäviä monimutkaisuutensa vuoksi. Työkaluketjumme on suunniteltu ratkaisemaan tämä ongelma ottamalla monimutkaisuus ja päänsärky pois prosessista, joten voit keskittyä rakentamaan hyviä sovelluksia käyttäjille.

kun aloitimme Sparkin Android-version kehitystyön, etsimme cross-platform-kieltä, jota voitaisiin käyttää sekä Android & iOS-kehityksessä ja joka olisi myös helppo siirtää nykyisestä Objective-C-koodista.

näihin aikoihin Swiftistä tuli avoimen lähdekoodin projekti ja hetken kuluttua se sai myös kyvyn kääntää koodia Android-alustalle. Tutkimme vaihtoehtojamme, ja meille oli aika selvää, että meidän pitäisi edetä siihen suuntaan.

miten Swift Android-kääntäjä toimii?

vastaus siihen on yksinkertainen: matalan tason virtuaalikone.

LLVM on kääntäjäinfrastruktuuri, joka perustuu kolmivaihesuunnittelun käsitteisiin ja uudelleenkohdennettavuuteen. Yksinkertaisesti sanottuna tämä tarkoittaa, että mikä tahansa kieli, jolla on etupään LLVM-kääntäjä, voidaan kääntää mille tahansa kohteelle, jolla on LLVM-taustaosan kääntäjä.

Google hyödyntää jo LLVM-kääntäjiä natiivi Android-kehitykseen C/C++: lla. Siksi Android-laitteen näkökulmasta C/C++ – tai Swift-koodista kootuissa kirjastoissa ei ole eroa. Lisäksi, se on itse asiassa parempi kehittäjille, koska he voivat käyttää uudelleen useimmat välineet, jotka on luotu C/C++ kehitys-Android profilointi työkaluja tai Android matalan tason debuggeri (rajoituksella arviointi swift koodi).

mitkä puitteet ovat käytettävissä?

No … niitä ei ole montaa. Meillä on pääsy vain swiftcoreen, Dispatchiin ja Swiftfoundationiin työkaluketjussamme. SwiftCore ja Dispatch ovat pitkälti identtisiä iOS-ja Mac-versioiden kanssa. Mutta SwiftFoundation toisaalta ei ole sama perusta, jota Apple käyttää omilla alustoillaan; se on kaikkien luokkien uudelleen toteutus alkuperäisestä kirjastosta. Siksi Swiftfoundationista puuttuu vielä joitakin ominaisuuksia, mutta se kattaa kaikki perustarpeet, kuten verkkopyyntöjen suorittamisen, JSON/XML-jäsennyksen, tietojen tallentamisen levylle jne.

ilmeisesti UIKit tai muut korkean tason kehykset eivät ole käytettävissä, joten Swift-sovellus iOS: lle ei voi taianomaisesti toimia Androidilla-voit käyttää Swift for business logic-koodia, mutta sinun täytyy kirjoittaa uudelleen kaikki käyttöliittymä-ja KÄYTTÖJÄRJESTELMÄRIIPPUVAISET osat erityisesti Androidille.

mitkä ovat Swiftin Android-kääntäjän rajoitukset?

  • tällä hetkellä Swift-kääntäjä tukee vain ARM-v7a-Android-alustaa.
  • Androidin pienin tuettu versio on v5.0 (Lollipop).
  • ja yksi merkittävimmistä rajoituksista on generation 32MB + APK-tiedostot, koska buildin tulisi sisältää SwiftCode, SwiftFoundation ja libDispatch.

Swift Android Toolchain

yksi suurimmista esteistä Swift-kääntäjän käyttämisessä Androidille on Applen virallisen tuen puute, mikä tarkoittaa, ettei jatkuvia integraatioita tai virallisia käännöksiä ole. Tajusimme, että voisimme optimoida monia hässäkkää läsnä kehittää Swift Android ja samaan aikaan, parantaa kokemusta kehittäjille tällä alalla. Halusimme välttää kaikki päänsärky, että Android Kehittäjät tyypillisesti kärsivät työskennellessään näillä työkaluilla.

siksi meillä on Swift Android Toolchain – kokoelma työkaluja, jotka antavat Android-kehittäjille mahdollisuuden käyttää Swiftiä projekteissaan mukavasti ja vaivatta. Se on avoimen lähdekoodin projekti, joka perustuu Apple Swift-kääntäjään ja SwiftJava-ja SwiftAndroid-projekteihin. Voit ladata työkaluketjun suoraan bintraystä (vain Mac) tai kääntää itse Githubista.

käytössä on tällä hetkellä haaroitettu versio Swiftistä. Meidän haarukka sisältää mahdollisuuden poistaa @objc ja dynaamiset ominaisuudet kääntäjä, koska se ei toimi kunnolla ei-Darwin alustoilla. Se sisältää myös joitakin pieniä korjauksia. Pyrimme siihen, että voisimme tulevaisuudessa käyttää virallista Swift-tietovarastoa.

lisäksi käytämme Swift Package Manageria (SPM) Swiftin rakennusjärjestelmänä. Se on build-järjestelmä, jota Apple käyttää Kääntäjässä ja muissa Swift-kirjastoissa. Tämä työkalu tarjoaa mahdollisuuden liittää riippuvuuksia, kääntää koodia, linkittää esineitä (dynaamiset kirjastot tai suoritettavat tiedostot) ja suorittaa testejä. Yhdessä toolchain, tarjoamme skriptejä SPM, joka automatisoi kaikki kehitys-ja testaus Android-sovelluksia.

Gradle plugin

komentoriviltä on tietysti hienoa rakentaa Swift-koodia, mutta Android-kehittäjille on yksinkertaisesti luontevampaa käyttää Android Studio IDE: tä. Onneksi, Android IDE käyttää erittäin joustava rakentaa järjestelmä nimeltään ”Gradle”.

loimme Gradle-liitännäisen, jolla voi lisätä Swift compilation build-vaiheen. Se antaa meille mahdollisuuden rakentaa sekoitettu Swift / Java / Kotlin projekteja vain yhdellä painikkeella.

JVM yhteentoimivuus

kaikki Android-sovellukset toimivat Java-virtuaalikoneessa. Jos joku kehittäjä haluaa native code (c / c++), heidän on ladattava kirjasto sovelluksen sisällä ja vuorovaikutuksessa sen Java Native Interface (jni). Swift ei ole poikkeus. Siksi Swift-koodin käyttämiseksi JVM: ssä meidän pitäisi ladata kirjastot ja kirjoittaa JNI-silta.

on täysin sinusta kiinni, mitä JVM-kieltä (Java tai Kotlin) käytät ja miten kirjoitat siltakoodin, mutta suosittelemme vilkaisemaan Swift-Merkintäprosessoria, joka tuottaa kaikki JNI-koodit Java-luokista ja rajapinnoista.

Blueprint project

Readdlen Android-tiimi on luonut sample Swift-sovelluksen, jolla voi kokeilla Swift Android Toolchainia toiminnassa. Jos haluat kokeilla Swiftiä Androidille, tämä on erinomainen projekti aloittaa. Blueprint-projekti on yksinkertainen tehtävä sovellus, jonka liiketoimintalogiikka on kirjoitettu Swiftillä, kun taas käyttöliittymä tehtiin Java-kielellä.

testaus

Swift-projekti sisältää jo xctest-nimisen testauskehyksen ja sitä voi jo käyttää Swift-koodin testaamiseen Android-alustalla. Swift Package Manager mahdollistaa testien koostamisen yhteen fat binary executable; sen jälkeen kehittäjät voivat ladata binary executable Android-laitteisiin ja ajaa sen kautta Android shell.

BONUS: työkaluketjumme automatisoi kaikki testausprosessin vaiheet. Blueprint-projekti sisältää muutamia yksinkertaisia testejä, joita voit kokeilla.

mitä seuraavaksi?

Swift-työkaluketjussa on vielä paljon tehtävää:

  • ARM64-kääntäjä (alustava määräaika: elokuu 2019)
  • X86, X86_64-kääntäjä (Chromebook-tuki)
  • LLDB Swift-tuella: asiakas ja palvelin

toivomme, että Swift Android Toolchain auttaa sinua tekemään kehitysprosessistasi helpon ja vaivattoman. Swift-kieli on kehittynyt suuresti parin viime vuoden aikana ja kehittäjät, jotka jo koodaavat iOS-ja Mac-alustoille Swiftin avulla, voivat nyt helposti saada Androidinkin tutkaansa.

Sources

  1. Getting Started with Swift on Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. avoimen lähdekoodin sovellusten Arkkitehtuuri: 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

Vastaa

Sähköpostiosoitettasi ei julkaista.