Spark este una dintre cele mai populare aplicații de e-mail disponibile gratuit pe iPhone, iPad, Mac, precum și Apple Watch. Pentru milioanele de utilizatori de pe platforma Android, momentul în care Spark vă ajută să vă iubiți e-mailul nu este foarte departe. Între timp, vrem să împărtășim cu dvs. un nou lanț de instrumente incredibil pe care l-am creat, care ia durerea și dificultățile de a lucra cu Swift pentru Android. Acest lanț de instrumente ajută echipele dev să utilizeze codul pe care l-au scris pentru platformele iOS sau Mac pentru a crea aplicații Android excelente.

compilatorul Apple Swift a avut capacitatea de a compila cod pentru platforma Android de câțiva ani, dar nu și-a făcut mulți prieteni în comunitatea dezvoltatorilor datorită complexității sale. Lanțul nostru de instrumente a fost conceput pentru a rezolva această problemă, eliminând complexitatea și durerile de cap din proces, astfel încât să vă puteți concentra pe construirea de aplicații excelente pentru utilizatorii dvs.

când am început să lucrăm la dezvoltarea versiunii Android a Spark, căutam un limbaj cross-platform care să poată fi folosit atât pentru Android & dezvoltarea iOS și ar fi, de asemenea, ușor de migrat din Baza noastră de cod Objective-C existentă.

în această perioadă Swift a devenit un proiect open-source și, după un timp scurt, a primit și capacitatea de a compila cod pentru platforma Android. Am explorat opțiunile noastre și a fost destul de evident pentru noi că ar trebui să ne mișcăm în această direcție.

cum funcționează compilatorul Swift Android?

răspunsul la acest lucru este simplu: mașină virtuală de nivel scăzut.

LLVM este o infrastructură de compilatoare care se bazează pe conceptele de proiectare trifazată cu re-targetabilitate. În termeni simpli, acest lucru înseamnă că orice limbă care are un compilator LLVM front-end poate fi compilat pentru orice țintă care are un compilator backend LLVM.

Google face deja uz de compilatoare LLVM pentru dezvoltarea Android nativ cu C / C++. De aceea, din perspectiva dispozitivului Android, nu există nicio diferență în bibliotecile compilate din C/C++ sau codul Swift. Mai mult, este de fapt mai bine pentru dezvoltatori, deoarece pot reutiliza majoritatea instrumentelor create pentru dezvoltarea C/C++-instrumente de profilare Android sau un debugger Android de nivel scăzut (cu o limitare a evaluării codului swift).

ce cadre sunt disponibile?

Ei bine…nu sunt mulți. Avem acces doar la SwiftCore, Dispatch și SwiftFoundation în lanțul nostru de instrumente. SwiftCore și Dispatch sunt în mare parte identice cu versiunile iOS și Mac. Dar SwiftFoundation, pe de altă parte, nu este aceeași fundație pe care Apple o folosește pentru propriile platforme; este o reimplementare a tuturor claselor din biblioteca originală. De aceea, SwiftFoundation încă lipsește unele caracteristici, dar acoperă toate nevoile de bază, cum ar fi efectuarea cererilor de rețea, analizarea JSON/XML, stocarea datelor pe disc etc.

evident, UIkit sau orice cadre de nivel înalt nu sunt disponibile, astfel încât aplicația Swift pentru iOS nu poate rula magic pe Android — puteți utiliza Swift pentru codul logic de afaceri, dar va trebui să rescrieți toate componentele dependente de interfața cu utilizatorul și sistemul de operare special pentru Android.

care sunt limitările compilatorului Swift Android?

  • în acest moment, compilatorul Swift acceptă doar platforma Android Arm-v7A.
  • versiunea minimă de Android acceptată este v5 .0 (Lollipop).
  • și una dintre cele mai semnificative limitări este generarea fișierelor APK 32MB+, deoarece construirea ar trebui să includă SwiftCode, SwiftFoundation și libDispatch.

introducerea Swift Android Toolchain

una dintre cele mai mari obstacole în utilizarea Swift compilator pentru Android este lipsa de sprijin oficial de la Apple, ceea ce înseamnă că nu integrări continue sau nu construiește oficiale. Ne-am dat seama că am putea optimiza multe dintre hassles prezente în curs de dezvoltare în Swift pentru Android și, în același timp, pentru a îmbunătăți experiența pentru dezvoltatorii noștri în acest domeniu. Am vrut să evităm toate durerile de cap pe care dezvoltatorii Android trebuie să le sufere de obicei atunci când lucrează cu aceste instrumente.

de aceea avem Swift Android Toolchain — o colecție de instrumente care oferă dezvoltatorilor Android posibilitatea de a utiliza Swift în proiectele lor confortabil și fără complicații. Este un proiect open-source bazat pe Apple Swift compilator și SwiftJava și SwiftAndroid proiecte. Puteți descărca toolchain direct de la Bintray (numai pentru Mac) sau compila pe cont propriu de la GitHub.

în prezent folosim versiunea bifurcată a Swift. Furca noastră conține opțiunea de a dezactiva @objc și funcțiile dinamice din compilator, deoarece nu funcționează corect pe platformele non-Darwin. Acesta conține, de asemenea, unele remedieri minore. Lucrăm la posibilitatea de a utiliza depozitul oficial Swift în viitor.

mai mult, folosim Swift Package Manager (SPM) ca sistem de construire pentru Swift. Este sistemul de construire pe care Apple îl folosește în compilator și în alte biblioteci Swift. Acest instrument oferă posibilitatea de a conecta dependențe, de a compila cod, de a lega artefacte (biblioteci dinamice sau executabile) și de a rula teste. Împreună cu lanțul nostru de instrumente, oferim scripturi pentru SPM care vor automatiza toate procesele de dezvoltare și testare a aplicațiilor Android.

Gradle plugin

desigur, este minunat să construiți Cod Swift din linia de comandă, dar este pur și simplu mai natural pentru dezvoltatorii Android să utilizeze Android Studio IDE. Din fericire, Android IDE folosește un sistem de construcție foarte flexibil numit ‘Gradle’.

am creat un plugin Gradle pentru adăugarea unui pas de compilare rapidă. Ne oferă posibilitatea de a construi proiecte mixte Swift/Java/Kotlin cu un singur buton.

interoperabilitate JVM

toate aplicațiile Android rulează în mașina virtuală Java. În cazul în care orice dezvoltator preferă codul nativ (C/C++), trebuie să încarce biblioteca în interiorul unei aplicații și să interacționeze cu aceasta prin interfața nativă Java (JNI). Swift nu face excepție. Astfel, pentru utilizarea codului Swift în JVM, ar trebui să încărcăm bibliotecile și să scriem un pod JNI.

depinde în întregime de dvs. ce limbă JVM (Java sau Kotlin) utilizați și cum scrieți codul de legătură, dar vă recomandăm să aruncați o privire la procesorul nostru de adnotare Swift care generează tot codul JNI din clasele și interfețele Java.

Blueprint project

echipa Android de la Readdle a creat o aplicație Swift de probă pentru a încerca Swift toolchain Android în acțiune. Dacă doriți să încercați Swift pentru Android, acesta este un proiect excelent pentru a începe. Proiectul Blueprint este un simplu de-a face app cu logica de afaceri scris în Swift, în timp ce UI a fost făcut în Java.

testarea

proiectul Swift include deja un cadru de testare numit XCTest și poate fi deja utilizat pentru testarea codului Swift pe platforma Android. Managerul de pachete Swift permite compilarea testelor într-un singur executabil binar fat; după aceea, dezvoltatorii pot încărca executabil binar pe dispozitive Android și îl pot rula prin shell-ul Android.

BONUS: lanțul nostru de instrumente automatizează toate etapele acestui proces de testare. Și proiectul Blueprint include câteva teste simple pentru a încerca.

ce urmează?

mai avem multe de făcut pentru Swift toolchain:

  • ARM64 compilator (termen limită provizoriu: August 2019)
  • x86, x86_64 compilator (suport Chromebookuri)
  • LLDB cu suport Swift: client și server

sperăm că Swift Android Toolchain vă va ajuta în a face procesul de dezvoltare ușor și fără griji. Limbajul Swift a evoluat foarte mult în ultimii ani, iar dezvoltatorii care deja codifică platformele iOS și Mac folosind Swift pot avea acum cu ușurință Android pe radarul lor.

surse

  1. Noțiuni de bază cu Swift pe Android https://github.com/apple/swift/blob/master/docs/Android.md
  2. arhitectura aplicațiilor Open Source: 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

Lasă un răspuns

Adresa ta de email nu va fi publicată.