
grazie Simone
come sviluppatori otteniamo il miglior lavoro svolto
quando abbiamo solo l’opportunità di sederci
giù senza distrazioni e entrare nel flusso
il cambio di contesto riduce notevolmente il nostro
efficienza e ci può causare un sacco di
frustrazione quanti di voi amerebbero
lavorare in un mondo in cui si lavora
in un coerente sintetico espressivo e
divertente linguaggio di programmazione tutto il giorno entrambi
anche per lo sviluppo dell’app
come gli strumenti per costruirlo
So che lo farei quando si tratta di costruire
Android possiamo usare un mix di lingue in
la fonte dell’app e la fonte dello strumento di creazione
tutto da Java
groovy XML JavaScript se c’è qualche web
roba codice nativo potrebbe essere in C C ++
ci sono un sacco di cose da fare qui e
può davvero rallentarci e inibire
nuovi sviluppatori per la base di codice sono ty
e io sono uno sviluppatore Android su uber
lavorando al nostro sviluppatore esterno
piattaforma di oggi ho intenzione di camminare
attraverso questo divertente o nuovo linguaggio
alcuni di voi potrebbero aver sentito parlare ormai
chiamato Kotlin e come può aiutare a fare
la tua vita un po ‘meglio e di più
coerente nel corso dell’intero
stack di sviluppo ti guiderò attraverso
una breve panoramica della lingua e poi
esempi pratici specifici principalmente
focalizzato a usarlo nella build
strumenti, ma prima ricordati di usare il
app per conferenze per valutare e fare domande
prima di iniziare con Kotlin, perché no
Java abbastanza buono per noi
uno dei principali punti di discussione ultimamente
è stato quando Android vedrà vero Java
otto supporto recentemente insieme al in
rilascio abbiamo sentito la parola otto
supporto con il nuovo compilatore Jack
tuttavia siamo un po ‘frammentati
mondo quando si parla di lingue
che Android supporta con Jack ottieni
il supporto lambda e ottieni il più recente
Funzionalità API per la nuova versione
ma sappiamo tutti come sono gli utenti Android
lento ad adottare nuove versioni così ha Java 7
supporto per un più ampio set di dispositivi I
credi in KitKat e in alto e in basso
che sono ancora bloccati su Java 6
supporto
così con quella frammentazione è davvero
difficile concentrarsi solo su un nuovo
linguaggio
Java Android può essere abbastanza
incline agli errori pure
catturare classi inter per esempio
lascia le tue app soggette a perdite di memoria
specialmente quando passano quelli a
speriamo in operazioni asincrone
ho avuto modo di vedere la discussione prima di lui
ha guidato molto di più nelle perdite che possono
essere associato a questo se non lo facessi
avere la possibilità di vederlo oggi, lo farei
consiglio di guardare quel video
anche diversi alcuni problemi tattici con
Java accanto lambda, che è una specie di
la cosa più popolare che la gente dice di loro
voglio come la raccolta in streaming
e altri problemi sistemici come il
verbose Ness null abilità e mutabilità
questi problemi sintattici possono essere
risolto con alcune grandi librerie che
aiuta a migliorare lo sviluppo dell’app
esperienza e backport in sicurezza alcuni di
quelle caratteristiche da Java 1/8 e 7 a
librerie di versioni precedenti come Jack
lambda retrò e persino rxjava ma questi
i problemi sistemici hanno causato un po ‘di problemi
problema anche se bene Ruby è quello che è
utilizzato principalmente per la costruzione di Gradle
ed è un modo espressivo e utile
linguaggio comunque penso che abbia anche un
poche limitazioni quindi rendono meno di
ideale per un mondo in cui abbiamo voluto questo
la coerenza tra i primi è quella
è che il primo è che è un
linguaggio dinamico mentre Kotlin è
Gradle sta digitando staticamente
dedicare più tempo all’elaborazione della lingua
a causa del runtime che verifica quello
deve essere fatto ed è stato notato
che usa Kotlin nelle build di Gradle
accelererà la fase di configurazione
perché groovy è più dinamico per il
IDE per essere intelligente da analizzare
completamento automatico e quindi sta per
essere più incline all’errore che stai per
devi fare la build prima che tu possa
spesso vedo che c’è un problema e
questo rallenterà il feedback
ciclo utilizzando uno staticamente tipizzato
lingua che consente all’IDE di essere più intelligente
per te e aiutarti a darti questi problemi
prima devi passare il tempo groovy
porta un numero di prestazioni e
preoccupazioni di memoria se lo fosse
in particolare su Android
in modo che potrebbe limitare questa coerenza
di cui abbiamo parlato ad esempio il
il tempo di esecuzione standard per groovy è abbastanza
grande la natura dinamica significa che il
Garbage Collector e Android sarebbe
correndo abbastanza frequentemente quale potrebbe
causa una scarsa esperienza utente e causa
i frame to drop non sarebbero grandiosi
avere coerenza tra la nostra build
plug-in degli script e il codice consegnabile
beh, penso che possiamo farcela
usando Collin con tutti i tipi sono sicuro che tu
una cosa o due su bene, se c’è
ci sono già stati altri discorsi
Kotlin qui alla conferenza ma per
quelli di voi che non hanno avuto la possibilità di
sentirne parlare, ne parlerò alcuni
i vantaggi di esso è costruito dal
gente di jetbrain la gente dietro
IntelliJ nella maggior parte dello studio Android
lavoro ed è completamente integrato
completamente all’aperto e progettato
con il cellulare in primo luogo in mente con Android
gli sviluppatori sono un obiettivo molto grande
pubblico per loro raggiungono fino a 100
pietra miliare un po ‘di recente, quindi abbiamo a
IA stabile e molte delle migliori app sono
già iniziando a integrare o esplorare
integrazione sin dalla prima volta che ho dato
questo discorso ha anche il team di Gradle
ha annunciato il supporto ufficiale per Kotlin
e costruisci script anche mentre è
ancora nella sua infanzia la dedizione da
la squadra e l’annuncio ufficiale
significa che andando avanti lo vedremo
trattato come un cittadino di prima classe perché
è progettato per funzionare con Android e
per prima cosa mobile è il bytecode che è
generato da Collin è compatibile al 100%
con la JVM sei così copre quello
problema di frammentazione che ho menzionato
prima e non ne hai davvero bisogno
converti tutto il tuo progetto in Kotlin
inizia a usarlo puoi usarlo subito
perché Kotlin è completamente interoperabile
con Java puoi mescolarli in
lo stesso progetto la lingua ha il suo
runtime standard e questa libreria fa
deve essere fornito in bundle con la tua applicazione
per fortuna è abbastanza piccolo entrare
a circa 600 K l’ultima volta ho controllato ora
se dovessi confrontare questo con l’iOS
mondo che molti di voi potrebbero conoscere
con Swift ha anche un molto simile
istituito è necessario un pacchetto rapido con il tuo
Applicazione iOS ma arriva a
circa 10 Meg per Android è carina
importante, soprattutto se stiamo andando a
considerare come target i mercati emergenti
dobbiamo mantenere piccoli i binari delle nostre app
e fortunatamente Kotlin ci permette di fare
questo perché Kotlin è tipizzato staticamente
come ho detto prima e mantiene
l’allocazione della memoria in mente non abbiamo
lo stesso tipo di sovraccarico di runtime che
saremmo quello che avremmo usando
un linguaggio tipizzato dinamicamente come Ruby
questo potrebbe essere un grande limite
Android in cui il GC sta per essere realizzato
quello più problematico
infine Colin è un linguaggio moderno con
molte fantastiche funzioni che rendono
sviluppo divertente e si può utilizzare su
tutto il tuo Android
vizi oggi ma, soprattutto, Colin
ci aiuta con molti dei vincoli
che Java ha introdotto quello Java e
Android entrambi introdotti utilizzando
Sistema di tipo Collins per sicurezza nullo esso
ci può aiutare a ridurre facile da evitare null
puntatore errore eccezioni e rendere il nostro
codice molto più manutenibile di Kotlin
noi un ottimo modo per ridurre il boilerplate
codice che è così sinonimo di Java e
rende il nostro codice molto più gestibile
e accessibile per altri sviluppatori
l’API di Android si basa principalmente su un
architettura dell’eredità e sebbene
questo funziona bene per i team di Google
mette il grande onere maggiore sul
sviluppatore di app in particolare quando molti di noi
cercare un’architettura di composizione
ci sono anche molte API che richiedono
cerimonia adeguata per completare devi
chiamare un numero di metodi per appena
pensa ai passaggi richiesti per
brindare al risparmio equivale alla luce
transazioni o utilizzando il registratore multimediale
Spesso si deve inizializzare fare la tua
lavorare e quindi chiamare un commit o salvare e
se ti capita di perdere uno di quei passaggi
lo scoprirai solo a
runtime infine mentre Java è troppo prolisso
a mio avviso definire un mantenibile
costruire script credo che sia Kotlin
espressivo e abbastanza conciso per competere
con molti aspetti di groovy il
linguaggio di script di build preferito di of
Gradle mentre fornisce il tipo tanto necessario
sicurezza per ridurre gli errori e accelerare il
sviluppo dei tuoi utensili così noi Colin
ha un sacco di funzioni interessanti per
nella tabella abbiamo le funzioni di ordine superiore
e proprietà e mix-in e c’è a
ce ne sono molti e io sono solo
dovrebbe essere qui per circa 45
minuti quindi sono solo andando a passare attraverso
alcuni di questi oggi che penso lo faranno
essere davvero promettente e aiutare con il tuo
utensili così uno dei più comuni
eccezioni nello sviluppo di Java è il
Eccezione puntatore nullo notoriamente infame
come l’errore da miliardi di dollari
sfortunatamente Java non ha un
rappresentazione di prima classe di qualcosa
quello può o non può essere nullo e noi abbiamo
visto che molte librerie e strumenti cercano di farlo
affrontare questo in passato con cerotti
su java avendo basato su runtime
verifica nulla rende il codice molto
più suscettibile anche quando stiamo usando
quei controlli nulli e avere il
il valore potenziale di null richiede
programmazione difensiva
che porta a molto meno mantenibile
codice così ecco il nostro primo esempio
per mostrare gli incarichi variabili di Cotton
noterai che Kotlin usa una sintassi
dove inverte il tipo e il nome
ordinare per la dichiarazione variabile in
questo caso otterremo un tempo di compilazione
eccezione su quella seconda linea come siamo
non è consentito assegnare null a VAR a
tuttavia nel prossimo esempio noterete
il punto interrogativo insieme al
dichiarazione che indica a Kotlin
che il valore potrebbe essere nullo e richiederà
cura di controllare che una volta proviamo a
utilizzare la variabile anche se vedremo
un errore di compilazione come abbiamo bisogno di
verificare esplicitamente il null prima dell’uso
potresti notare i due diversi modi di
dichiarando la variabile qui sia var che
Val e per chiarire Kotlin usa var per
indica che è una variabile immutabile
mentre usa Val per indicare indica
che è un valore immutabile in questo
l’ultimo esempio di abilità nulla che possiamo vedere
alcuni formati diversi da verificare
null la prima riga di codice che noterai
il punto interrogativo è di nuovo in uso
viene dichiarata qualsiasi ulteriore chiamata di metodo
quell’oggetto restituirà null se il
l’oggetto genitore è null e questo rimuove
la necessità per noi di fare il nidificato se nullo
controlla in Java nella seconda riga di
codice seguiamo un po ‘diverso
formattare invece di utilizzare noi null
specificare un valore predefinito usando un singolo
espressione if-else e in quest’ultima
esempio, sfruttiamo l’Elvis
operatore per semplificare la sintassi del
esempi precedenti passiamo a
un’altra caratteristica interessante della classe collin
proprietà in questo esempio che definiremo
una classe chiamata utente e specificare un membro
variabile per il nome usando la sintassi
dove mettiamo il membro in linea con il
il nome di classe è un approccio, anche se noi
potrebbe specificarlo di seguito nella classe come
bene che può essere più familiare di alcuni
anche se questo sembra uno standard
Campo Java questa è una proprietà sintetica
questo significa che getter e setter
vengono generati automaticamente per noi e
questo è ciò che viene usato vicino al fondo
della diapositiva che aiuta sicuramente a pulire
un po ‘ di quel codice di caldaia che possiamo
tuttavia sovrascrive il default generato
getter e setter per specificare
logica personalizzata dichiarando un get in un set
metodo sotto la definizione della proprietà
noterai che cambiamo la sintassi
per la dichiarazione di proprietà qui come
bene dalla diapositiva precedente questo è
solo un altro modo di gestirlo
Oltre all’utilizzo di proprietà per ripulire
codice boilerplate Kotlin offre un concetto
ha chiamato la classe dati che è stata progettata
essere un pojo leggero e fare tutto
di quelle cose quindi è standard POJO
e Java normalmente avrebbe dovuto prendere
cura di avanzare aggiungendo i dati
parola chiave nella dichiarazione otteniamo questo
comportamento genererà automaticamente un
uguale e metodo hashcode per noi così noi
non è più necessario definirlo e basta
creerà anche il metodo to string
con tutti i parametri del costruttore
che abbiamo definito
infine genererà il metodo di copia
per noi con i parametri di default in modo che
non devi implementare i builder per
copia e crea pozioni immutabili
in tutte le classi di dati del codice base
non hanno molti limiti come pure per esempio
non possono estendere un’altra classe o essere
astratto quindi lo consiglio vivamente
cercando le restrizioni di questo in
la documentazione di Kotlin per decidere se
è giusto per te andiamo avanti
un altro esempio di funzione letterale o
lambda sono un ottimo modo per fare codice
più leggibile e sono diventato
previsto per le lingue moderne oggi Java
6 non ha supporto per questi, ma da
usando un quadro come il retro lambda che
riscrive il bytecode da un lambda a
Java 7 o Java 8 lambda 2 un singolo
il metodo astratto è un ottimo modo per noi
fatelo in Android oggi fortunato per noi
lo mettiamo fuori dalla scatola con Collin in
questo esempio ne vediamo alcuni diversi
modi sintattici per scriverli lo faranno
dedurre il tipo dalla definizione così noi
può fare riferimento alle variabili direttamente in
il primo esempio in un secondo con O
con un solo parametro che possiamo
fare riferimento ad esso come la notazione standard
simile a groovy o molti altri
lingue e possiamo memorizzare la funzione
letterale in variabili tali che possiamo
accedervi in seguito, se necessario, espandendola
la funzione letterale concetto Collin anche
ci fornisce le funzioni di ordine superiore
o funzioni che assumono funzioni come
parametri o
per trasformarli è molto potente
tecnica per scrivere codice pulito leggibile
vedremo alcuni più potenti
esempi di questo nei casi d’uso del mondo reale
per ripulire il codice Android e Gradle
non appena abbiamo capito l’ultimo
concetto richiesto e quell’ultimo concetto
di cui voglio parlare è l’estensione
le funzioni di chiamata ti danno l’abilità
aggiungere metodi a tipi esistenti e
questo è molto potente e simile a
altre lingue come C sharp ed è a
ottimo modo per sostituire l’ inferno di utilità
che Java ha saputo diventare il tuo posto
hai detto a te un rappresentante della classe
interazioni con un oggetto che è fuori
del tuo controllo
la sintassi richiede che tu abbia appena definito
il nome del metodo type e quindi il codice
interagisce con quella classe come se lo fosse
di proprietà di quella classe si prega di notare che tu
non può ignorare i metodi esistenti di a
classe con una funzione con un’estensione
funzione un’altra cosa da notare è quella
Kotlin ti dà solo accesso a
metodo che hai definito in una classe in cui
hai definito l’ estensione della funzione se
volevi usarlo in altre classi
si avrebbe bisogno di importare esplicitamente
dalla classe in cui dovevi trovarlo
Ho detto prima che funziona così
le funzioni di estensione erano un ottimo modo per
evita di usare l’ inferno in Java ma anche io
accennato che Kotlin è completamente
interoperabile con Java quindi cos’è questo
in realtà sta generando una classe
con un metodo statico che intercetta
chiama all’oggetto in Kotlin ma in
Java puoi che puoi chiamarlo
generato static util direttamente Calton
assegnerà un nome predefinito al file
in base al nome del file, ma è possibile
specificare qualcosa di personalizzato usando il
annotazione qui file nome JVM con il
stringa per il file se si voleva
gruppo multiplo di queste estensioni
funziona in un solo util anziché
avere uno generato per te
questa altra annotazione e dichiara il
nominare e utilizzare la classe di file Multi JVM
annotazione per fare questo può essere davvero
potente in Android ecco il
modo tradizionale di salvare un oggetto in
puoi vedere le preferenze condivise in Java
che ci richiede di ammettere il
l’editor delle preferenze inserisce l’oggetto
l’editor delle preferenze e quindi chiama
applicare e questo è incline per errore come esso
richiede che la cerimonia cada nel
esatto seguito esattamente e se non lo facciamo
quindi non salviamo il valore che noi
aspettarsi
quindi, come possiamo renderlo migliore qui
quella stessa funzionalità ma usando il
ultimi tre concetti di cui abbiamo parlato
usando nelle funzioni di estensione del cotone
funzioni e funzioni di ordine superiore
letterali aggiungiamo un metodo di modifica al
oggetto di preferenza condiviso che accetta un
funzione letterale definita come
un’altra funzione di estensione dell’editor
classe e questo può essere fonte di confusione in un primo momento
ma è incredibilmente potente e
consente qualsiasi passaggio letterale della funzione 10 a
comportarsi come se fosse un metodo sul
l’editor delle preferenze condiviso oggetto questo
ci consente di utilizzare il codice in un tipo sicuro
modo sapendo che la stringa è stata salvata
senza doversi preoccupare di
riferimento al redattore corretto un avvertimento
da notare però è fin da quando è Kotlin
Java 6 compatibile con l’ordine superiore
le funzioni impongono determinati runtime
penalità ogni funzione è un oggetto e
cattura una chiusura di queste variabili
a cui si accede nel corpo del
funziona così ora abbiamo memoria
allocazioni sia per la funzione
oggetti e per le classi e il
chiamate virtuali al runtime introdotto
overhead pure, ma aggiungendo il
parola chiave inline in Kotlin alla funzione
dichiarazione stiamo dicendo al Kotlin
compilatore per compilare il codice in linea come
se l’avessimo definito il primo modo
che ho mostrato in Java, che è mentre
incline all’errore da una manutenibilità
prospettiva molto più performante per il
macchina così ora il nostro bytecode tra il
La versione di Kotlin e la versione di Java è
ricorda lo stesso quando l’ho detto
Kotlin non aggiunge bene l’ overhead di runtime
questa è una di quelle caratteristiche che
davvero permette che questi Kotlin
le caratteristiche ci danno una grande abilità
iniziare a creare una DSL c’è questo figo
libreria proof-of-concept chiamata Eng
co-scritto dal team di jetbrains
ti permette di descrivere in modo pulito Android
layout utilizzando puramente Collins senza
dovendo usare l’eczema XML a tutti
utilizzando le funzioni di ordine superiore è possibile
puoi scrivere un layout DSL pulito per Android
notare anche che la sintassi sta iniziando
per sembrare abbastanza simile a groovy quindi forse
ora te l’ ho detto su alcuni dei
benefici di Kotlin come lingua e tu
può vedere come potrebbe essere utile per il lavoro
nella tua app Android, ma l’introduzione di che
aggiungerebbe ulteriore frammentazione a questo
al tuo codice base
potresti avere Kotlin nella tua app e a
mix di mix di groovy e Java e il tuo
costruisci strumenti fino a tre
lingue jvm lingue solo per essere
pensare e gli umani non sono davvero
che bravo a cambiare contesto no
importa davvero quello che hai impostato tu
pensa a te stesso
gli studi dimostrano che non siamo bravi in questo
quindi questo sovraccarico si ridurrà
la produttività degli sviluppatori forse possiamo usare
Kotlin portandolo al livello successivo
in Gradle potremmo usarlo nella build
strumento e ho intenzione di camminare
attraverso alcuni piccoli esempi di mini uso
caso di un caso d’uso che molti di noi hanno avuto
come caricare le informazioni chiave API in modo che
possiamo firmare le richieste in uscita su una rete
server e sono stati un bel po ‘
discorsi e post di blog e progetti di esempio
insegnarci a usare Kotlin in Android
specificamente in modo da ora in poi sarò solo
concentrandosi principalmente all’interno di Gradle
ovviamente per usare Kotlin dobbiamo
installarlo è abbastanza semplice da installare
usando Gradle aggiungiamo solo un tempo di costruzione
dipendenza e applicare il plug-in e
quindi includiamo la libreria standard e
runtime possiamo mescolare i file Katie
e i file Java e i file groovy
anche notare assicurarsi di installare il
Plugin di Kotlin in studio IntelliJ o Android
renderà la tua vita un po ‘più facile
può anche aiutare a facilitare l’aggiunta di questi
dipendenze e ha fornito Java a
Il convertitore Kotlin potrebbe non produrre il
il più idiomatico di Colin ma è sicuramente
un ottimo inizio per questa Scozia
codice di runtime, ma prendiamoci un momento per
rendere il nostro script di build ancora meglio utilizzando
Colin e il supporto per Kotlin Gradle
il supporto di Kotlin negli script di Gradle
in particolare è ancora un lavoro in
progresso al momento il team Gradle
prima ha presentato il supporto Kotlin per la compilazione
script in Gradle alcuni un paio di mesi
fa con i benefici di Kotlin nel
IDE ora sarà molto più facile per noi
scrivere e mantenere questi script di build I
so che sono davvero eccitato per il completamento automatico
in Gradle a questo punto l’integrazione
è un po ‘ limitato però e
richiede alcuni workaround qui è un
esempio che ho creato è un sottoinsieme
del più grande esempio nel repository Gradle
per Kotlin e io abbiamo collegato questo
le diapositive quando vengono pubblicate quelle che farai
guarda, ma se guardi attentamente
quell’esempio precedente te ne accorgerai
ci sono un paio di cose che erano a
po ‘fuori ci sono alcune linee che
appena
sembra proprio giusto perché è fatto
Kotlin funziona in modo idiomatico
molti di noi hanno familiarità con Groovy
e ciò che la maggior parte degli sviluppatori Android sono
abituato in generale ho dovuto aggiungere tutto
queste funzioni di estensione per farlo
lavoro su alcune cose che ho creato qui
un blocco per il tag Android in modo che noi
potremmo usare il riferimento DSL Android noi
voglio nominare l’accesso alla versione
costruisci dal momento che è stato digitato staticamente
groovy quando si digita il tipo di build
parentesi di rilascio che è in realtà
risolvendolo internamente nel fare a
ricerca con la ricerca per nome e se noi
voglio quella compilazione statica che dobbiamo
utilizzare una funzione di estensione in modo esplicito
dichiarare il tipo di build non è fantastico
ma questa è una delle soluzioni alternative che
doveva essere fatto
dovevamo anche accedere al valore predefinito
oggetto sapore prodotto direttamente se noi
dovevo solo usare la configurazione di default che
Groovy ci fornisce o quel Gradle
ci fornisce restituisce l’abstract
classe quindi dovremmo fare un’istanza
di controllo e lanciarlo a qualcosa
diverso che sarebbe piuttosto grossolano così
questo ci permette di aggirare questo a
un po ‘anche in standard
groovy quando si utilizza la build di Android
strumenti che noterai che puoi impostare
loro in SDK e l’ SDK di compilazione
basta usare un numero intero sotto il
cappuccio che in realtà lo sta convertendo
in un oggetto a livello di API così anche noi
creato un paio di funzioni di estensione a
facilitare la possibilità di prendere un numero intero
e convertilo in così puoi farlo
sicuramente vedere che è una prova di
concetto comunque sta a dimostrare la
l’intero stack Android può essere utilizzato in
Kotlin e possiamo scavare in alcuni esempi
ora che abbiamo superato lo script a
un po ‘e dove Kotlin brilla
senza dover avere questo tipo di
soluzioni alternative e questo è nei plugin così
come la tua scala di build e vuoi
condividere una logica diversa tra il
diverse app che hai avviato
costruire plugin questo Kotlin in quelli
può essere molto produttivo
quindi ecco uno scenario comune che molto
di ingegneri Android sarebbe familiare
con uno sviluppatore vorrebbe firmare un
richiesta in uscita con una chiave utente e
segreto per l’autenticazione sul back – end
in questo esempio definiamo la chiave in
segreto e quindi li usiamo con a
SDK generico concentriamoci su quella chiave API
parte in particolare ciò che è ovvio
miglioramento che possiamo fare
produrre il codice qui è avere
diverso
Chiavi API per diversi tipi di build o
sapori per esempio a causa di analisi
potrebbe volere una chiave di consumatore diversa e
segreto usato per la versione per sviluppatori
e la versione di produzione se questo
non era un SDK ma il tuo servizio web
vorresti anche definire la stadiazione
e le credenziali di produzione in questo modo
potenzialmente altrettanto interessante
e se volessi spingerlo a un
repository open-source come github o allow
sviluppatori o appaltatori di terze parti a
lavorare sul codice sorgente e non l’hai fatto
desidera esporre informazioni riservate
idealmente avremmo una giusta separazione di
preoccupazioni e avremmo queste chiavi
fornito all’applicazione durante il
processo di creazione da una posizione sicura su
la macchina CI avrebbe incontrato il
preoccupazione precedente e darci il
fiducia che quando lo sviluppatore
spinto ad un repo open source che loro
non ha perso accidentalmente informazioni
questo è un esempio di dove il Gradle
gli utensili possono davvero far brillare ciò che abbiamo
ecco il plug-in Android Gradle DSL
ci permette di aggiungere un costante al
classe buildconfig generata che è
accessibile nel codice sorgente di Android
siamo in grado di definire chiavi diverse e
segreti per vari tipi di build e
sapori entrambi e questa sintassi è molto
semplice basta dichiarare la
tipo seguito dal nome e dal valore
per accedere quindi ora abbiamo le chiavi
fornito a Gradle alla classe che è
ampiamente accessibile nella nostra fonte Android
codice anche se questo ci permette di fornire
chiavi diverse per diversi tipi di build
soddisfare uno dei nostri precedenti requisiti
non siamo ancora riusciti a raggiungere
il nostro altro obiettivo di separare l’API
chiavi dal repository principale, quindi facciamolo
dare un’occhiata ad alcune altre tecniche
che possiamo usare con Gradle per aiutarci
lì Gradle fornisce un numero di
meccanismi per fornire i nostri valori iniettivi
nel processo di costruzione
ci sono le proprietà Gradle o
a volte indicato come il progetto
proprietà o trattino P in cui vive
varie località che iniziano nel locale
progetto definito come il punto Gradle
file di proprietà ma include anche il
casa dell’utente nella barra home Gradle
Proprietà a punti sfumati che vivono all’esterno
del tuo repo ci sono anche gli standard
variabili di sistema standard impostate per
in esecuzione sul terminale con
dash D, infine, si può sempre caricare la vostra
possedere un file di proprietà personalizzato e quindi utilizzarlo
quei valori nel resto della tua build
ciclo vitale
in pratica la scelta varia da squadra
per team è guidato in gran parte dalla tua
processo di lavoro delle politiche del gruppo e
struttura quale sistema CI usi
qual è il tuo processo di onboarding come per
ingegneri nuovi e nuovi e altri minori
vincoli una volta che abbiamo la proprietà
accessibile questa funzione di skip prop usa
entrambe le proprietà Gradle e il
variabili di sistema e imposta l’ordine di
precedenza e come sono stati risolti
puoi avere la chiave di sviluppo per
il tuo dev build ma quando si tratta di
CI accumulo si può avere il vostro sistema
variabili impostate da un progettista DevOps
per sovrascriverlo per evitare accidentale
check-in e questo potrebbe proteggere
informazioni riservate per il tuo
organizzazione ed ecco come potremmo usare
che ottiene la funzione prop nella build
Gradle qualunque cosa sia stata impostata
ci iniettare che nella configurazione di compilazione
classe ora abbiamo incontrato la capacità di di
entrambi i nostri requisiti che noi
accennato in precedenza abbiamo la separazione
di preoccupazioni e siamo in grado di
iniettalo nella diversa build
tipi tuttavia se si dispone di più chiavi
può essere noioso tenere traccia di tutto
le diverse variabili di ambiente
necessario per impostare un nuovo sviluppo
ambiente o spin up una nuova casella CI così
potresti voler creare un’abitudine
proprietà file e lascia il punto Gradle
proprietà controllate per non sensibili
informazioni come la versione dell’ID artefatto
numero altre cose come quella e poi
potrebbe essere necessario un file per un altro motivo
potrebbe volere un file di proprietà come questo
è se si utilizzano SDK di terze parti che si basano
su questi per estrarre l’ID cliente o
informazioni del genere o semplicemente te
vuoi salire a bordo dei nuovi ingegneri con il tuo
possedere il plug-in Gradle e semplificarlo
elaborare come ridimensionare la tua squadra, quindi se
volevi farlo, lo aggiungeremmo al
Smettila e poi andremo avanti e
mostreremo del codice per generarne alcuni
file di proprietà personalizzati da quello così facciamo
creare un’attività personalizzata che può essere definita
in build.gradle otteniamo tutti i valori che abbiamo
bisogno e poi li scriviamo nel
file per la compilazione se sei un Java
ingegnere non molto familiare
groovy con il flusso di output sarà di
interesse per te qui è un’estensione
alla classe del file implementata da groovy
che avvolge solo l’apertura di un file e
leggere concettualmente il flusso di output
è molto simile al Kotlin
funzioni di estensione estensione della funzione
groovy come Kotlin non ha
controllate le eccezioni quindi non c’è bisogno
per un try-catch qui così ora tutto ciò di cui hai bisogno
fare è eseguire questa attività una volta per ogni volta
hai un nuovo ambiente e un nuovo
sviluppatore o chiavi aggiuntive se si aggiunge
una proprietà personalizzata per ottenere il file ignora
puoi quindi inviare questo codice a un pubblico
repo pure senza preoccupare la tua squadra
probabilmente ha più di un’app
forse per coerenza vuoi condividere
un po ‘di questo codice puoi essere sicuro
ogni app è configurata allo stesso modo anche
meglio si vuole riutilizzare questo processo
per altre app esterne, quindi facciamolo
questo è più coerente per tutte le tue app
attraverso la costruzione di un plugin Gradle il
Il plug-in di Gradle ha tre basi
ingredienti di cui parlerò
circa oggi e il primo è il compito
è tipicamente usato per rappresentare un
azione attivata dalla riga di comando
o un’altra attività puoi anche estendere il
oggetto del progetto per varie cose
alcuni esempi forniscono valori da
build.gradle o una funzione per
build.gradle questo è l’oggetto terra
che normalmente vedi nel tuo
file build.gradle
infine viene utilizzato il plug-in stesso
legare i componenti precedenti che noi
ho appena parlato del Gradle
ciclo di vita e questo è generalmente il
logica di business del tuo plugin che noi
bisogno di parlare di un modo molto semplice per
creare un’attività personalizzata è estendendo il
funzioni della classe di attività predefinite annotate
con l’ azione at verrà chiamato
quando l’attività è eseguita crea il file
la funzione qui contiene la logica che noi
ha scritto valori nella proprietà personalizzata
file con qualche generalizzazione da consentire
per la riusabilità, questa attività richiede una chiave
e file di output da fornire in modo che
il consumatore plug-in fornisce il proprio
liste delle chiavi e il percorso per il
file che vogliono scrivere perché
questo codice siederà al di fuori della build
grande potremmo averlo scritto in Java
facciamo un semplice esempio per dimostrare
perché penso che sarebbe groovy o Kotlin
preferibile a Java in questo esempio
è quello che sembra in Java che puoi
vedere è molto più brutto del groovy
versione che abbiamo appena guardato
include null try-catch aggiuntivo
controlla e mentre sviluppatori Java
acclimatarsi nel tempo per vederlo e
tipo di messa a punto e guardando il
logica che scoraggia attivamente molte nuove
gli sviluppatori di avvicinarsi al codice base
specialmente quando vengono da
lingue diverse quante ne hai
aperto un file obiettivo-c e ha avuto un
tempo difficile guardando oltre tutte le parentesi
è esattamente la stessa sensazione che non
Sviluppatori Java ottengono quando guardano
Il codice Java come questo purtroppo è un
barriera per l’ ingresso e credo Kotlin
può aiutarci con quello per drammatico
effetto ti mostrerò come appare
se abbiamo appena commentato tutto questo
codice cerimoniale tutto ciò che è standardizzato e
questo è tanto conciso quanto la grupe
versione e come puoi vedere è molto
più facile da seguire lungo quello che sta succedendo
ora che abbiamo seguito il piccolo coniglio
tieni premuto torniamo in pista con
il nostro esempio di plugin per continuare
con il compito un’altra parte importante di
sono gli input e gli output definiti
input è l’annotazione Gradle che
indica che un campo è un compito di input
completato un file di output è un altro
Annotazione gradle dichiarata in un
l’output dell’attività per questo file sono
particolarmente importante per incrementale
edificio per il Gradle e per il
Gradle clean task per potenziare correttamente
caching e build veloci per il
consumatori di questo plugin per farlo
più facile per i nostri utenti plug-in
configurare l’ attività che forniremo a
estensione un’estensione è una classe semplice
che consente al consumatore plug-in di
fornire i dati necessari per l’esecuzione
il plug-in per esempio è il Gradle
quindi si trova principalmente all’interno del
Gradle plug-in DSL quindi questo è quello che
sei abituato e un esempio di questo è
sta usando un pogo o una versione groovy di
un POJO e questo ci dà il
funzionalità per creare quel lambda ora
questi membri dei dati al momento della compilazione lo faranno
essere fornito con getter e setter
simile alle proprietà sintetiche in
Colin per renderlo più idiomatico sarà
fornire fornirà anche il file chiave
all’assegnazione della scorciatoia al file che puoi
aggiungi la funzione get prop qui nel
estensioni in modo che la funzione può essere
disponibile per qualsiasi progetto che si applica
il nostro plugin e infine il plug-in stesso
ciò ci aiuterà a legare e integrare
questi componenti nella nostra build
ciclo vitale
per prima cosa vogliamo aggiungere la nostra estensione in
l’oggetto del progetto usando il
estensioni correttamente proprietà ciò consente
noi per accedere ai dati forniti dal
consumatore plug-in e consente loro di utilizzare
la sua sintassi nella loro build il plug-in
la classe interagisce molto con il progetto
oggetto e il Gradle fornisce a
funzione di configurazione nel progetto
oggetto per consentire una più concisa
sintassi inferendo l’oggetto del progetto
sarà usato nella seguente chiusura
puoi vedere nella seconda riga qui
estensioni del progetto per più conciso
esempio questo può essere dedotto da sim can
essere dedotto semplicemente come estensioni con
la chiusura di configurazione che esegue
esattamente come il primo esempio un altro
parte importante dei plugin è da fare
le attività a disposizione del progetto
dopo valutare la chiusura significa che se tu
vuoi che il blocco di codice venga chiamato una volta
tutta la fase di inizializzazione di Gradle
è stato completato diciamo che noi
voglio solo aggiungere le attività se le chiavi
sono stati effettivamente assegnati e cioè
facciamo nel dopo valutare chiusura a
consentire al consumatore plug-in di impostarlo
la loro build Gradle qui possiamo vedere come
uno userebbe quella spina che plug-in in
lo script build.gradle quindi non ci si
avere il nostro plug-in Gradle in Groovy
semplificando l’utilizzo dei tasti di Web API
ora vediamo come sarebbe se
proviamo a convertirlo in Kotlin
ecco la sintassi che dovresti
conosci già dal
introduzione in precedenza che ho dato al
lingua abbiamo due chiavi di campo
sono una lista e un file che ora è annullabile
non abbiamo bisogno che sia Nalla Balu dire
ma per questa demo voglio farcela
romanzo per mostrarti come affrontare il
interoperabilità delle API Java che sono
per natura na livello così Kotla ha bisogno di essere
in grado di interagire con quell’API e sapere
che non si tratta di entrare per favore
prestare attenzione alla prima linea aperta
qui dichiara che questa classe non lo è
final per default tutte le classi in Kotlin
sono definitive e questo sarà un problema quando
si tratta di costruire questo a Gradle
perché l’attività deve essere esplicitamente
esteso da via Gradle e fornisce
un proxy e dobbiamo contrassegnarlo come aperto
tale Gradle può ereditare da esso e
aggiungi la sua logica
ecco la versione di creare il file
funzione quando tradotta linea per linea
simile al groovy Kotlin non ha
verificate le eccezioni in modo tale da non essere coinvolte
l’eccezione sarà semplicemente elevata al
colletto qui abbiamo un’altra versione
questo è un po ‘più idiomatico che abbiamo
sostituito il ciclo for con un 4h e un
funzione letterale ma per di più
interessante qui è questa ultima riga qui
stiamo usando l’operatore del doppio colpo
ricorda come il file chiave è stato ben concepito
quello che stiamo dicendo qui con il doppio
l’operatore bang è quella chiave se il file chiave è
nullo
basta lanciare l’eccezione del puntatore nullo
e questo è un altro modo per affrontare
oggetti nullable e ja in con nullable
gli oggetti provenienti da java sono i nostri
versione del POJO come Gradle
estensione e questo usa la classe dati
da Colin ora stiamo guardando il
classe plug-in simile a prima che desideriamo
aggiungere l’estensione al progetto e
ancora una volta vogliamo usare il dopo valutare
qui per consentire l’estensione dell’estensione
la costruzione Gradle bene questo è più pulito
che l’esempio Java che ho mostrato
prima in questa fase sembra ancora
abbastanza prolisso e mi piacerebbe ulteriormente
migliorare su quello alcuni esempi la multa
loro prendono nome col detentore che sei
osservando ciò che non sta andando
completamento automatico quindi cosa possiamo fare per
semplificare questo bene utilizzando una coppia
funzioni di estensione possiamo assegnare a
configurare la funzione per il progetto nel
estensioni e estensioni di prima linea
la seconda linea sarà in grado di fare
il codice è molto più conciso e
comodo a quelli che vengono da groovy
quindi ecco l’ esempio di come appare
come prima e dopo usiamo quelli
funzioni di estensione per ripulirlo voi
possiamo vedere nel secondo esempio come noi
andare verso un più dichiarativo e
groovy come sintassi così ora abbiamo il
versione finale del nostro plugin in Colin
proprio come con la versione groovy che aggiungiamo
la proroga dopo la valutazione è
fatto per creare un’attività per creare un file
in base ai dati di estensione che erano
fornito è dichiarativo
bello e familiare – sviluppatori groovy
ma è coerente con il Kotlin
è potenzialmente già nel tuo Android
app se usi anko o pattern simili
nella tua app Android tutto il tuo codice può
inizia ad assomigliare anche a questo
Credo che questo riduca il contesto
commutazione l’overhead e permette
una mossa più veloce tra diversi livelli
della pila
So che ho incontrato un caso di grandi dimensioni
sviluppatori che hanno un po ‘di
ansia e saltellando nella loro corporatura
strumenti provenienti da app Android e I
spero che qualcosa come questo possa iniziare
per renderlo un po ‘più accessibile
abbiamo parlato di molte informazioni qui
oggi ci sono grandi risorse su
il web per aiutare a scavare più in profondità la
la lingua prima è la documentazione ufficiale
sono una grande risorsa di apprendimento con a
una tonnellata di informazioni mi consiglia di iniziare da lì
i Kotlin Cohens sono un ottimo modo per
impara e gioca con Kotlin nel tuo
browser è un IDE interattivo anko is
quel fantastico plugin che ho mostrato prima
è open source a cui puoi scavare
è abbastanza bello sostituire l’ XML
layout
Non lo userei necessariamente in
produzione so che alcune app sono ma
è bello vedere come
evolve c’è anche il Gradle ufficiale
repo che ha esempi di utilizzo di Kotlin
e costruire script ora ce n’era un altro
il discorso tenuto da Jake Wharton dura davvero
anno adore dev che si tuffa molto più a fondo
e usando Kotlin nello sviluppo di Android
Raccomando di vedere che c’è anche
stato un sacco di altri grandi discorsi Kotlin
uscendo di recente dalla scena Android
se si voleva ulteriori informazioni sull’uso
questo in Android questo esempio
Il plug-in Gradle è open source e questo
uno che abbiamo costruito oggi e in Scozia
la versione vive in questo repository su github
questi sono tutti link cliccabili dal
le diapositive saranno condivise più persone
usa e contribuisci a Kotlin più velocemente
tutti possiamo avere un linguaggio moderno per
i nostri lavori giornalieri dal momento che Google potrebbe prendere un
mentre per ufficialmente sancire Kotlin per
Android se mai lo fanno tocca a noi
la comunità per guidare al meglio
pratiche in avanti mentre Google possiede
Android è un ecosistema open source
e siamo tutti responsabili per aver reso
meglio può prendere alcune domande ora
e se non vuoi dirlo
forte quindi sono felice di parlare in seguito
pure loro
per il tuo tempo oggi ti ringrazio molto
Ciao
abbiamo ottenuto una domanda dal ABS che è
dove il catalano ha il supporto per i pelucchi
in Android Studio adesso
l’attrezzatura per lo sfilacciamento è molto utile
il generale è un fantastico Jake oggi
ha introdotto il supporto lint in 104 è
un po ‘recente 103 quindi è recente
ma io non credo che ci sia un sacco di
strumenti di pelatura pronti all’uso per
cose in cotone che potresti desiderare
essere il controllo per tanto essere solo l’Android
quelli che corri non lo so
ci sono domande dal
il pubblico ha sorpreso nessuno mi sta chiedendo
sugli aspetti negativi di Collin, sì, forse
si potrebbe dire qualcosa che mi
intendo dire che non è il primo
strumenti di partito costruiti da
Il team di Android quindi è decisamente in esecuzione
tempi di fatturazione un po ‘più lenti sono più lenti
c’è ancora Finnick enos nell’IDE se
stai usando un sistema di build alternativo
come se ne avessi un po ‘
problemi a farlo funzionare è
sicuramente un ambiente in rapido movimento quindi
gli strumenti ci arriveranno ma è così
sicuramente un work in progress è così
qualcosa che vorresti provare –
oh assolutamente assolutamente ragazzi
l’ angolo no, intendo per noi che abbiamo avuto
più squadre in uber che sono state
lo stavo investigando usando
testare cose diverse per un po ‘
mentre so che ce ne sono stati molti
altre squadre Pinterest ne hanno alcune
codice scritto in esso so che i quadrati hanno funzionato
a Kotlin un po ‘su alcuni dei loro
roba è sicuramente in arrivo e
sarà un ottimo modo per farlo
le tue app ma è sicuramente da quando è così
ancora in evoluzione è un ecosistema e il
due collegamenti in arrivo intorno ad esso è
qualcosa di cui essere attenti circa la
migrazione va bene, grazie cravatta e il
per favore dagli una mano e ricordati di
valutare la sessione
tu
come sviluppatori otteniamo il miglior lavoro svolto
quando abbiamo solo l’opportunità di sederci
giù senza distrazioni e entrare nel flusso
il cambio di contesto riduce notevolmente il nostro
efficienza e ci può causare un sacco di
frustrazione quanti di voi amerebbero
lavorare in un mondo in cui si lavora
in un coerente sintetico espressivo e
divertente linguaggio di programmazione tutto il giorno entrambi
anche per lo sviluppo dell’app
come gli strumenti per costruirlo
So che lo farei quando si tratta di costruire
Android possiamo usare un mix di lingue in
la fonte dell’app e la fonte dello strumento di creazione
tutto da Java
groovy XML JavaScript se c’è qualche web
roba codice nativo potrebbe essere in C C ++
ci sono un sacco di cose da fare qui e
può davvero rallentarci e inibire
nuovi sviluppatori per la base di codice sono ty
e io sono uno sviluppatore Android su uber
lavorando al nostro sviluppatore esterno
piattaforma di oggi ho intenzione di camminare
attraverso questo divertente o nuovo linguaggio
alcuni di voi potrebbero aver sentito parlare ormai
chiamato Kotlin e come può aiutare a fare
la tua vita un po ‘meglio e di più
coerente nel corso dell’intero
stack di sviluppo ti guiderò attraverso
una breve panoramica della lingua e poi
esempi pratici specifici principalmente
focalizzato a usarlo nella build
strumenti, ma prima ricordati di usare il
app per conferenze per valutare e fare domande
prima di iniziare con Kotlin, perché no
Java abbastanza buono per noi
uno dei principali punti di discussione ultimamente
è stato quando Android vedrà vero Java
otto supporto recentemente insieme al in
rilascio abbiamo sentito la parola otto
supporto con il nuovo compilatore Jack
tuttavia siamo un po ‘frammentati
mondo quando si parla di lingue
che Android supporta con Jack ottieni
il supporto lambda e ottieni il più recente
Funzionalità API per la nuova versione
ma sappiamo tutti come sono gli utenti Android
lento ad adottare nuove versioni così ha Java 7
supporto per un più ampio set di dispositivi I
credi in KitKat e in alto e in basso
che sono ancora bloccati su Java 6
supporto
così con quella frammentazione è davvero
difficile concentrarsi solo su un nuovo
linguaggio
Java Android può essere abbastanza
incline agli errori pure
catturare classi inter per esempio
lascia le tue app soggette a perdite di memoria
specialmente quando passano quelli a
speriamo in operazioni asincrone
ho avuto modo di vedere la discussione prima di lui
ha guidato molto di più nelle perdite che possono
essere associato a questo se non lo facessi
avere la possibilità di vederlo oggi, lo farei
consiglio di guardare quel video
anche diversi alcuni problemi tattici con
Java accanto lambda, che è una specie di
la cosa più popolare che la gente dice di loro
voglio come la raccolta in streaming
e altri problemi sistemici come il
verbose Ness null abilità e mutabilità
questi problemi sintattici possono essere
risolto con alcune grandi librerie che
aiuta a migliorare lo sviluppo dell’app
esperienza e backport in sicurezza alcuni di
quelle caratteristiche da Java 1/8 e 7 a
librerie di versioni precedenti come Jack
lambda retrò e persino rxjava ma questi
i problemi sistemici hanno causato un po ‘di problemi
problema anche se bene Ruby è quello che è
utilizzato principalmente per la costruzione di Gradle
ed è un modo espressivo e utile
linguaggio comunque penso che abbia anche un
poche limitazioni quindi rendono meno di
ideale per un mondo in cui abbiamo voluto questo
la coerenza tra i primi è quella
è che il primo è che è un
linguaggio dinamico mentre Kotlin è
Gradle sta digitando staticamente
dedicare più tempo all’elaborazione della lingua
a causa del runtime che verifica quello
deve essere fatto ed è stato notato
che usa Kotlin nelle build di Gradle
accelererà la fase di configurazione
perché groovy è più dinamico per il
IDE per essere intelligente da analizzare
completamento automatico e quindi sta per
essere più incline all’errore che stai per
devi fare la build prima che tu possa
spesso vedo che c’è un problema e
questo rallenterà il feedback
ciclo utilizzando uno staticamente tipizzato
lingua che consente all’IDE di essere più intelligente
per te e aiutarti a darti questi problemi
prima devi passare il tempo groovy
porta un numero di prestazioni e
preoccupazioni di memoria se lo fosse
in particolare su Android
in modo che potrebbe limitare questa coerenza
di cui abbiamo parlato ad esempio il
il tempo di esecuzione standard per groovy è abbastanza
grande la natura dinamica significa che il
Garbage Collector e Android sarebbe
correndo abbastanza frequentemente quale potrebbe
causa una scarsa esperienza utente e causa
i frame to drop non sarebbero grandiosi
avere coerenza tra la nostra build
plug-in degli script e il codice consegnabile
beh, penso che possiamo farcela
usando Collin con tutti i tipi sono sicuro che tu
una cosa o due su bene, se c’è
ci sono già stati altri discorsi
Kotlin qui alla conferenza ma per
quelli di voi che non hanno avuto la possibilità di
sentirne parlare, ne parlerò alcuni
i vantaggi di esso è costruito dal
gente di jetbrain la gente dietro
IntelliJ nella maggior parte dello studio Android
lavoro ed è completamente integrato
completamente all’aperto e progettato
con il cellulare in primo luogo in mente con Android
gli sviluppatori sono un obiettivo molto grande
pubblico per loro raggiungono fino a 100
pietra miliare un po ‘di recente, quindi abbiamo a
IA stabile e molte delle migliori app sono
già iniziando a integrare o esplorare
integrazione sin dalla prima volta che ho dato
questo discorso ha anche il team di Gradle
ha annunciato il supporto ufficiale per Kotlin
e costruisci script anche mentre è
ancora nella sua infanzia la dedizione da
la squadra e l’annuncio ufficiale
significa che andando avanti lo vedremo
trattato come un cittadino di prima classe perché
è progettato per funzionare con Android e
per prima cosa mobile è il bytecode che è
generato da Collin è compatibile al 100%
con la JVM sei così copre quello
problema di frammentazione che ho menzionato
prima e non ne hai davvero bisogno
converti tutto il tuo progetto in Kotlin
inizia a usarlo puoi usarlo subito
perché Kotlin è completamente interoperabile
con Java puoi mescolarli in
lo stesso progetto la lingua ha il suo
runtime standard e questa libreria fa
deve essere fornito in bundle con la tua applicazione
per fortuna è abbastanza piccolo entrare
a circa 600 K l’ultima volta ho controllato ora
se dovessi confrontare questo con l’iOS
mondo che molti di voi potrebbero conoscere
con Swift ha anche un molto simile
istituito è necessario un pacchetto rapido con il tuo
Applicazione iOS ma arriva a
circa 10 Meg per Android è carina
importante, soprattutto se stiamo andando a
considerare come target i mercati emergenti
dobbiamo mantenere piccoli i binari delle nostre app
e fortunatamente Kotlin ci permette di fare
questo perché Kotlin è tipizzato staticamente
come ho detto prima e mantiene
l’allocazione della memoria in mente non abbiamo
lo stesso tipo di sovraccarico di runtime che
saremmo quello che avremmo usando
un linguaggio tipizzato dinamicamente come Ruby
questo potrebbe essere un grande limite
Android in cui il GC sta per essere realizzato
quello più problematico
infine Colin è un linguaggio moderno con
molte fantastiche funzioni che rendono
sviluppo divertente e si può utilizzare su
tutto il tuo Android
vizi oggi ma, soprattutto, Colin
ci aiuta con molti dei vincoli
che Java ha introdotto quello Java e
Android entrambi introdotti utilizzando
Sistema di tipo Collins per sicurezza nullo esso
ci può aiutare a ridurre facile da evitare null
puntatore errore eccezioni e rendere il nostro
codice molto più manutenibile di Kotlin
noi un ottimo modo per ridurre il boilerplate
codice che è così sinonimo di Java e
rende il nostro codice molto più gestibile
e accessibile per altri sviluppatori
l’API di Android si basa principalmente su un
architettura dell’eredità e sebbene
questo funziona bene per i team di Google
mette il grande onere maggiore sul
sviluppatore di app in particolare quando molti di noi
cercare un’architettura di composizione
ci sono anche molte API che richiedono
cerimonia adeguata per completare devi
chiamare un numero di metodi per appena
pensa ai passaggi richiesti per
brindare al risparmio equivale alla luce
transazioni o utilizzando il registratore multimediale
Spesso si deve inizializzare fare la tua
lavorare e quindi chiamare un commit o salvare e
se ti capita di perdere uno di quei passaggi
lo scoprirai solo a
runtime infine mentre Java è troppo prolisso
a mio avviso definire un mantenibile
costruire script credo che sia Kotlin
espressivo e abbastanza conciso per competere
con molti aspetti di groovy il
linguaggio di script di build preferito di of
Gradle mentre fornisce il tipo tanto necessario
sicurezza per ridurre gli errori e accelerare il
sviluppo dei tuoi utensili così noi Colin
ha un sacco di funzioni interessanti per
nella tabella abbiamo le funzioni di ordine superiore
e proprietà e mix-in e c’è a
ce ne sono molti e io sono solo
dovrebbe essere qui per circa 45
minuti quindi sono solo andando a passare attraverso
alcuni di questi oggi che penso lo faranno
essere davvero promettente e aiutare con il tuo
utensili così uno dei più comuni
eccezioni nello sviluppo di Java è il
Eccezione puntatore nullo notoriamente infame
come l’errore da miliardi di dollari
sfortunatamente Java non ha un
rappresentazione di prima classe di qualcosa
quello può o non può essere nullo e noi abbiamo
visto che molte librerie e strumenti cercano di farlo
affrontare questo in passato con cerotti
su java avendo basato su runtime
verifica nulla rende il codice molto
più suscettibile anche quando stiamo usando
quei controlli nulli e avere il
il valore potenziale di null richiede
programmazione difensiva
che porta a molto meno mantenibile
codice così ecco il nostro primo esempio
per mostrare gli incarichi variabili di Cotton
noterai che Kotlin usa una sintassi
dove inverte il tipo e il nome
ordinare per la dichiarazione variabile in
questo caso otterremo un tempo di compilazione
eccezione su quella seconda linea come siamo
non è consentito assegnare null a VAR a
tuttavia nel prossimo esempio noterete
il punto interrogativo insieme al
dichiarazione che indica a Kotlin
che il valore potrebbe essere nullo e richiederà
cura di controllare che una volta proviamo a
utilizzare la variabile anche se vedremo
un errore di compilazione come abbiamo bisogno di
verificare esplicitamente il null prima dell’uso
potresti notare i due diversi modi di
dichiarando la variabile qui sia var che
Val e per chiarire Kotlin usa var per
indica che è una variabile immutabile
mentre usa Val per indicare indica
che è un valore immutabile in questo
l’ultimo esempio di abilità nulla che possiamo vedere
alcuni formati diversi da verificare
null la prima riga di codice che noterai
il punto interrogativo è di nuovo in uso
viene dichiarata qualsiasi ulteriore chiamata di metodo
quell’oggetto restituirà null se il
l’oggetto genitore è null e questo rimuove
la necessità per noi di fare il nidificato se nullo
controlla in Java nella seconda riga di
codice seguiamo un po ‘diverso
formattare invece di utilizzare noi null
specificare un valore predefinito usando un singolo
espressione if-else e in quest’ultima
esempio, sfruttiamo l’Elvis
operatore per semplificare la sintassi del
esempi precedenti passiamo a
un’altra caratteristica interessante della classe collin
proprietà in questo esempio che definiremo
una classe chiamata utente e specificare un membro
variabile per il nome usando la sintassi
dove mettiamo il membro in linea con il
il nome di classe è un approccio, anche se noi
potrebbe specificarlo di seguito nella classe come
bene che può essere più familiare di alcuni
anche se questo sembra uno standard
Campo Java questa è una proprietà sintetica
questo significa che getter e setter
vengono generati automaticamente per noi e
questo è ciò che viene usato vicino al fondo
della diapositiva che aiuta sicuramente a pulire
un po ‘ di quel codice di caldaia che possiamo
tuttavia sovrascrive il default generato
getter e setter per specificare
logica personalizzata dichiarando un get in un set
metodo sotto la definizione della proprietà
noterai che cambiamo la sintassi
per la dichiarazione di proprietà qui come
bene dalla diapositiva precedente questo è
solo un altro modo di gestirlo
Oltre all’utilizzo di proprietà per ripulire
codice boilerplate Kotlin offre un concetto
ha chiamato la classe dati che è stata progettata
essere un pojo leggero e fare tutto
di quelle cose quindi è standard POJO
e Java normalmente avrebbe dovuto prendere
cura di avanzare aggiungendo i dati
parola chiave nella dichiarazione otteniamo questo
comportamento genererà automaticamente un
uguale e metodo hashcode per noi così noi
non è più necessario definirlo e basta
creerà anche il metodo to string
con tutti i parametri del costruttore
che abbiamo definito
infine genererà il metodo di copia
per noi con i parametri di default in modo che
non devi implementare i builder per
copia e crea pozioni immutabili
in tutte le classi di dati del codice base
non hanno molti limiti come pure per esempio
non possono estendere un’altra classe o essere
astratto quindi lo consiglio vivamente
cercando le restrizioni di questo in
la documentazione di Kotlin per decidere se
è giusto per te andiamo avanti
un altro esempio di funzione letterale o
lambda sono un ottimo modo per fare codice
più leggibile e sono diventato
previsto per le lingue moderne oggi Java
6 non ha supporto per questi, ma da
usando un quadro come il retro lambda che
riscrive il bytecode da un lambda a
Java 7 o Java 8 lambda 2 un singolo
il metodo astratto è un ottimo modo per noi
fatelo in Android oggi fortunato per noi
lo mettiamo fuori dalla scatola con Collin in
questo esempio ne vediamo alcuni diversi
modi sintattici per scriverli lo faranno
dedurre il tipo dalla definizione così noi
può fare riferimento alle variabili direttamente in
il primo esempio in un secondo con O
con un solo parametro che possiamo
fare riferimento ad esso come la notazione standard
simile a groovy o molti altri
lingue e possiamo memorizzare la funzione
letterale in variabili tali che possiamo
accedervi in seguito, se necessario, espandendola
la funzione letterale concetto Collin anche
ci fornisce le funzioni di ordine superiore
o funzioni che assumono funzioni come
parametri o
per trasformarli è molto potente
tecnica per scrivere codice pulito leggibile
vedremo alcuni più potenti
esempi di questo nei casi d’uso del mondo reale
per ripulire il codice Android e Gradle
non appena abbiamo capito l’ultimo
concetto richiesto e quell’ultimo concetto
di cui voglio parlare è l’estensione
le funzioni di chiamata ti danno l’abilità
aggiungere metodi a tipi esistenti e
questo è molto potente e simile a
altre lingue come C sharp ed è a
ottimo modo per sostituire l’ inferno di utilità
che Java ha saputo diventare il tuo posto
hai detto a te un rappresentante della classe
interazioni con un oggetto che è fuori
del tuo controllo
la sintassi richiede che tu abbia appena definito
il nome del metodo type e quindi il codice
interagisce con quella classe come se lo fosse
di proprietà di quella classe si prega di notare che tu
non può ignorare i metodi esistenti di a
classe con una funzione con un’estensione
funzione un’altra cosa da notare è quella
Kotlin ti dà solo accesso a
metodo che hai definito in una classe in cui
hai definito l’ estensione della funzione se
volevi usarlo in altre classi
si avrebbe bisogno di importare esplicitamente
dalla classe in cui dovevi trovarlo
Ho detto prima che funziona così
le funzioni di estensione erano un ottimo modo per
evita di usare l’ inferno in Java ma anche io
accennato che Kotlin è completamente
interoperabile con Java quindi cos’è questo
in realtà sta generando una classe
con un metodo statico che intercetta
chiama all’oggetto in Kotlin ma in
Java puoi che puoi chiamarlo
generato static util direttamente Calton
assegnerà un nome predefinito al file
in base al nome del file, ma è possibile
specificare qualcosa di personalizzato usando il
annotazione qui file nome JVM con il
stringa per il file se si voleva
gruppo multiplo di queste estensioni
funziona in un solo util anziché
avere uno generato per te
questa altra annotazione e dichiara il
nominare e utilizzare la classe di file Multi JVM
annotazione per fare questo può essere davvero
potente in Android ecco il
modo tradizionale di salvare un oggetto in
puoi vedere le preferenze condivise in Java
che ci richiede di ammettere il
l’editor delle preferenze inserisce l’oggetto
l’editor delle preferenze e quindi chiama
applicare e questo è incline per errore come esso
richiede che la cerimonia cada nel
esatto seguito esattamente e se non lo facciamo
quindi non salviamo il valore che noi
aspettarsi
quindi, come possiamo renderlo migliore qui
quella stessa funzionalità ma usando il
ultimi tre concetti di cui abbiamo parlato
usando nelle funzioni di estensione del cotone
funzioni e funzioni di ordine superiore
letterali aggiungiamo un metodo di modifica al
oggetto di preferenza condiviso che accetta un
funzione letterale definita come
un’altra funzione di estensione dell’editor
classe e questo può essere fonte di confusione in un primo momento
ma è incredibilmente potente e
consente qualsiasi passaggio letterale della funzione 10 a
comportarsi come se fosse un metodo sul
l’editor delle preferenze condiviso oggetto questo
ci consente di utilizzare il codice in un tipo sicuro
modo sapendo che la stringa è stata salvata
senza doversi preoccupare di
riferimento al redattore corretto un avvertimento
da notare però è fin da quando è Kotlin
Java 6 compatibile con l’ordine superiore
le funzioni impongono determinati runtime
penalità ogni funzione è un oggetto e
cattura una chiusura di queste variabili
a cui si accede nel corpo del
funziona così ora abbiamo memoria
allocazioni sia per la funzione
oggetti e per le classi e il
chiamate virtuali al runtime introdotto
overhead pure, ma aggiungendo il
parola chiave inline in Kotlin alla funzione
dichiarazione stiamo dicendo al Kotlin
compilatore per compilare il codice in linea come
se l’avessimo definito il primo modo
che ho mostrato in Java, che è mentre
incline all’errore da una manutenibilità
prospettiva molto più performante per il
macchina così ora il nostro bytecode tra il
La versione di Kotlin e la versione di Java è
ricorda lo stesso quando l’ho detto
Kotlin non aggiunge bene l’ overhead di runtime
questa è una di quelle caratteristiche che
davvero permette che questi Kotlin
le caratteristiche ci danno una grande abilità
iniziare a creare una DSL c’è questo figo
libreria proof-of-concept chiamata Eng
co-scritto dal team di jetbrains
ti permette di descrivere in modo pulito Android
layout utilizzando puramente Collins senza
dovendo usare l’eczema XML a tutti
utilizzando le funzioni di ordine superiore è possibile
puoi scrivere un layout DSL pulito per Android
notare anche che la sintassi sta iniziando
per sembrare abbastanza simile a groovy quindi forse
ora te l’ ho detto su alcuni dei
benefici di Kotlin come lingua e tu
può vedere come potrebbe essere utile per il lavoro
nella tua app Android, ma l’introduzione di che
aggiungerebbe ulteriore frammentazione a questo
al tuo codice base
potresti avere Kotlin nella tua app e a
mix di mix di groovy e Java e il tuo
costruisci strumenti fino a tre
lingue jvm lingue solo per essere
pensare e gli umani non sono davvero
che bravo a cambiare contesto no
importa davvero quello che hai impostato tu
pensa a te stesso
gli studi dimostrano che non siamo bravi in questo
quindi questo sovraccarico si ridurrà
la produttività degli sviluppatori forse possiamo usare
Kotlin portandolo al livello successivo
in Gradle potremmo usarlo nella build
strumento e ho intenzione di camminare
attraverso alcuni piccoli esempi di mini uso
caso di un caso d’uso che molti di noi hanno avuto
come caricare le informazioni chiave API in modo che
possiamo firmare le richieste in uscita su una rete
server e sono stati un bel po ‘
discorsi e post di blog e progetti di esempio
insegnarci a usare Kotlin in Android
specificamente in modo da ora in poi sarò solo
concentrandosi principalmente all’interno di Gradle
ovviamente per usare Kotlin dobbiamo
installarlo è abbastanza semplice da installare
usando Gradle aggiungiamo solo un tempo di costruzione
dipendenza e applicare il plug-in e
quindi includiamo la libreria standard e
runtime possiamo mescolare i file Katie
e i file Java e i file groovy
anche notare assicurarsi di installare il
Plugin di Kotlin in studio IntelliJ o Android
renderà la tua vita un po ‘più facile
può anche aiutare a facilitare l’aggiunta di questi
dipendenze e ha fornito Java a
Il convertitore Kotlin potrebbe non produrre il
il più idiomatico di Colin ma è sicuramente
un ottimo inizio per questa Scozia
codice di runtime, ma prendiamoci un momento per
rendere il nostro script di build ancora meglio utilizzando
Colin e il supporto per Kotlin Gradle
il supporto di Kotlin negli script di Gradle
in particolare è ancora un lavoro in
progresso al momento il team Gradle
prima ha presentato il supporto Kotlin per la compilazione
script in Gradle alcuni un paio di mesi
fa con i benefici di Kotlin nel
IDE ora sarà molto più facile per noi
scrivere e mantenere questi script di build I
so che sono davvero eccitato per il completamento automatico
in Gradle a questo punto l’integrazione
è un po ‘ limitato però e
richiede alcuni workaround qui è un
esempio che ho creato è un sottoinsieme
del più grande esempio nel repository Gradle
per Kotlin e io abbiamo collegato questo
le diapositive quando vengono pubblicate quelle che farai
guarda, ma se guardi attentamente
quell’esempio precedente te ne accorgerai
ci sono un paio di cose che erano a
po ‘fuori ci sono alcune linee che
appena
sembra proprio giusto perché è fatto
Kotlin funziona in modo idiomatico
molti di noi hanno familiarità con Groovy
e ciò che la maggior parte degli sviluppatori Android sono
abituato in generale ho dovuto aggiungere tutto
queste funzioni di estensione per farlo
lavoro su alcune cose che ho creato qui
un blocco per il tag Android in modo che noi
potremmo usare il riferimento DSL Android noi
voglio nominare l’accesso alla versione
costruisci dal momento che è stato digitato staticamente
groovy quando si digita il tipo di build
parentesi di rilascio che è in realtà
risolvendolo internamente nel fare a
ricerca con la ricerca per nome e se noi
voglio quella compilazione statica che dobbiamo
utilizzare una funzione di estensione in modo esplicito
dichiarare il tipo di build non è fantastico
ma questa è una delle soluzioni alternative che
doveva essere fatto
dovevamo anche accedere al valore predefinito
oggetto sapore prodotto direttamente se noi
dovevo solo usare la configurazione di default che
Groovy ci fornisce o quel Gradle
ci fornisce restituisce l’abstract
classe quindi dovremmo fare un’istanza
di controllo e lanciarlo a qualcosa
diverso che sarebbe piuttosto grossolano così
questo ci permette di aggirare questo a
un po ‘anche in standard
groovy quando si utilizza la build di Android
strumenti che noterai che puoi impostare
loro in SDK e l’ SDK di compilazione
basta usare un numero intero sotto il
cappuccio che in realtà lo sta convertendo
in un oggetto a livello di API così anche noi
creato un paio di funzioni di estensione a
facilitare la possibilità di prendere un numero intero
e convertilo in così puoi farlo
sicuramente vedere che è una prova di
concetto comunque sta a dimostrare la
l’intero stack Android può essere utilizzato in
Kotlin e possiamo scavare in alcuni esempi
ora che abbiamo superato lo script a
un po ‘e dove Kotlin brilla
senza dover avere questo tipo di
soluzioni alternative e questo è nei plugin così
come la tua scala di build e vuoi
condividere una logica diversa tra il
diverse app che hai avviato
costruire plugin questo Kotlin in quelli
può essere molto produttivo
quindi ecco uno scenario comune che molto
di ingegneri Android sarebbe familiare
con uno sviluppatore vorrebbe firmare un
richiesta in uscita con una chiave utente e
segreto per l’autenticazione sul back – end
in questo esempio definiamo la chiave in
segreto e quindi li usiamo con a
SDK generico concentriamoci su quella chiave API
parte in particolare ciò che è ovvio
miglioramento che possiamo fare
produrre il codice qui è avere
diverso
Chiavi API per diversi tipi di build o
sapori per esempio a causa di analisi
potrebbe volere una chiave di consumatore diversa e
segreto usato per la versione per sviluppatori
e la versione di produzione se questo
non era un SDK ma il tuo servizio web
vorresti anche definire la stadiazione
e le credenziali di produzione in questo modo
potenzialmente altrettanto interessante
e se volessi spingerlo a un
repository open-source come github o allow
sviluppatori o appaltatori di terze parti a
lavorare sul codice sorgente e non l’hai fatto
desidera esporre informazioni riservate
idealmente avremmo una giusta separazione di
preoccupazioni e avremmo queste chiavi
fornito all’applicazione durante il
processo di creazione da una posizione sicura su
la macchina CI avrebbe incontrato il
preoccupazione precedente e darci il
fiducia che quando lo sviluppatore
spinto ad un repo open source che loro
non ha perso accidentalmente informazioni
questo è un esempio di dove il Gradle
gli utensili possono davvero far brillare ciò che abbiamo
ecco il plug-in Android Gradle DSL
ci permette di aggiungere un costante al
classe buildconfig generata che è
accessibile nel codice sorgente di Android
siamo in grado di definire chiavi diverse e
segreti per vari tipi di build e
sapori entrambi e questa sintassi è molto
semplice basta dichiarare la
tipo seguito dal nome e dal valore
per accedere quindi ora abbiamo le chiavi
fornito a Gradle alla classe che è
ampiamente accessibile nella nostra fonte Android
codice anche se questo ci permette di fornire
chiavi diverse per diversi tipi di build
soddisfare uno dei nostri precedenti requisiti
non siamo ancora riusciti a raggiungere
il nostro altro obiettivo di separare l’API
chiavi dal repository principale, quindi facciamolo
dare un’occhiata ad alcune altre tecniche
che possiamo usare con Gradle per aiutarci
lì Gradle fornisce un numero di
meccanismi per fornire i nostri valori iniettivi
nel processo di costruzione
ci sono le proprietà Gradle o
a volte indicato come il progetto
proprietà o trattino P in cui vive
varie località che iniziano nel locale
progetto definito come il punto Gradle
file di proprietà ma include anche il
casa dell’utente nella barra home Gradle
Proprietà a punti sfumati che vivono all’esterno
del tuo repo ci sono anche gli standard
variabili di sistema standard impostate per
in esecuzione sul terminale con
dash D, infine, si può sempre caricare la vostra
possedere un file di proprietà personalizzato e quindi utilizzarlo
quei valori nel resto della tua build
ciclo vitale
in pratica la scelta varia da squadra
per team è guidato in gran parte dalla tua
processo di lavoro delle politiche del gruppo e
struttura quale sistema CI usi
qual è il tuo processo di onboarding come per
ingegneri nuovi e nuovi e altri minori
vincoli una volta che abbiamo la proprietà
accessibile questa funzione di skip prop usa
entrambe le proprietà Gradle e il
variabili di sistema e imposta l’ordine di
precedenza e come sono stati risolti
puoi avere la chiave di sviluppo per
il tuo dev build ma quando si tratta di
CI accumulo si può avere il vostro sistema
variabili impostate da un progettista DevOps
per sovrascriverlo per evitare accidentale
check-in e questo potrebbe proteggere
informazioni riservate per il tuo
organizzazione ed ecco come potremmo usare
che ottiene la funzione prop nella build
Gradle qualunque cosa sia stata impostata
ci iniettare che nella configurazione di compilazione
classe ora abbiamo incontrato la capacità di di
entrambi i nostri requisiti che noi
accennato in precedenza abbiamo la separazione
di preoccupazioni e siamo in grado di
iniettalo nella diversa build
tipi tuttavia se si dispone di più chiavi
può essere noioso tenere traccia di tutto
le diverse variabili di ambiente
necessario per impostare un nuovo sviluppo
ambiente o spin up una nuova casella CI così
potresti voler creare un’abitudine
proprietà file e lascia il punto Gradle
proprietà controllate per non sensibili
informazioni come la versione dell’ID artefatto
numero altre cose come quella e poi
potrebbe essere necessario un file per un altro motivo
potrebbe volere un file di proprietà come questo
è se si utilizzano SDK di terze parti che si basano
su questi per estrarre l’ID cliente o
informazioni del genere o semplicemente te
vuoi salire a bordo dei nuovi ingegneri con il tuo
possedere il plug-in Gradle e semplificarlo
elaborare come ridimensionare la tua squadra, quindi se
volevi farlo, lo aggiungeremmo al
Smettila e poi andremo avanti e
mostreremo del codice per generarne alcuni
file di proprietà personalizzati da quello così facciamo
creare un’attività personalizzata che può essere definita
in build.gradle otteniamo tutti i valori che abbiamo
bisogno e poi li scriviamo nel
file per la compilazione se sei un Java
ingegnere non molto familiare
groovy con il flusso di output sarà di
interesse per te qui è un’estensione
alla classe del file implementata da groovy
che avvolge solo l’apertura di un file e
leggere concettualmente il flusso di output
è molto simile al Kotlin
funzioni di estensione estensione della funzione
groovy come Kotlin non ha
controllate le eccezioni quindi non c’è bisogno
per un try-catch qui così ora tutto ciò di cui hai bisogno
fare è eseguire questa attività una volta per ogni volta
hai un nuovo ambiente e un nuovo
sviluppatore o chiavi aggiuntive se si aggiunge
una proprietà personalizzata per ottenere il file ignora
puoi quindi inviare questo codice a un pubblico
repo pure senza preoccupare la tua squadra
probabilmente ha più di un’app
forse per coerenza vuoi condividere
un po ‘di questo codice puoi essere sicuro
ogni app è configurata allo stesso modo anche
meglio si vuole riutilizzare questo processo
per altre app esterne, quindi facciamolo
questo è più coerente per tutte le tue app
attraverso la costruzione di un plugin Gradle il
Il plug-in di Gradle ha tre basi
ingredienti di cui parlerò
circa oggi e il primo è il compito
è tipicamente usato per rappresentare un
azione attivata dalla riga di comando
o un’altra attività puoi anche estendere il
oggetto del progetto per varie cose
alcuni esempi forniscono valori da
build.gradle o una funzione per
build.gradle questo è l’oggetto terra
che normalmente vedi nel tuo
file build.gradle
infine viene utilizzato il plug-in stesso
legare i componenti precedenti che noi
ho appena parlato del Gradle
ciclo di vita e questo è generalmente il
logica di business del tuo plugin che noi
bisogno di parlare di un modo molto semplice per
creare un’attività personalizzata è estendendo il
funzioni della classe di attività predefinite annotate
con l’ azione at verrà chiamato
quando l’attività è eseguita crea il file
la funzione qui contiene la logica che noi
ha scritto valori nella proprietà personalizzata
file con qualche generalizzazione da consentire
per la riusabilità, questa attività richiede una chiave
e file di output da fornire in modo che
il consumatore plug-in fornisce il proprio
liste delle chiavi e il percorso per il
file che vogliono scrivere perché
questo codice siederà al di fuori della build
grande potremmo averlo scritto in Java
facciamo un semplice esempio per dimostrare
perché penso che sarebbe groovy o Kotlin
preferibile a Java in questo esempio
è quello che sembra in Java che puoi
vedere è molto più brutto del groovy
versione che abbiamo appena guardato
include null try-catch aggiuntivo
controlla e mentre sviluppatori Java
acclimatarsi nel tempo per vederlo e
tipo di messa a punto e guardando il
logica che scoraggia attivamente molte nuove
gli sviluppatori di avvicinarsi al codice base
specialmente quando vengono da
lingue diverse quante ne hai
aperto un file obiettivo-c e ha avuto un
tempo difficile guardando oltre tutte le parentesi
è esattamente la stessa sensazione che non
Sviluppatori Java ottengono quando guardano
Il codice Java come questo purtroppo è un
barriera per l’ ingresso e credo Kotlin
può aiutarci con quello per drammatico
effetto ti mostrerò come appare
se abbiamo appena commentato tutto questo
codice cerimoniale tutto ciò che è standardizzato e
questo è tanto conciso quanto la grupe
versione e come puoi vedere è molto
più facile da seguire lungo quello che sta succedendo
ora che abbiamo seguito il piccolo coniglio
tieni premuto torniamo in pista con
il nostro esempio di plugin per continuare
con il compito un’altra parte importante di
sono gli input e gli output definiti
input è l’annotazione Gradle che
indica che un campo è un compito di input
completato un file di output è un altro
Annotazione gradle dichiarata in un
l’output dell’attività per questo file sono
particolarmente importante per incrementale
edificio per il Gradle e per il
Gradle clean task per potenziare correttamente
caching e build veloci per il
consumatori di questo plugin per farlo
più facile per i nostri utenti plug-in
configurare l’ attività che forniremo a
estensione un’estensione è una classe semplice
che consente al consumatore plug-in di
fornire i dati necessari per l’esecuzione
il plug-in per esempio è il Gradle
quindi si trova principalmente all’interno del
Gradle plug-in DSL quindi questo è quello che
sei abituato e un esempio di questo è
sta usando un pogo o una versione groovy di
un POJO e questo ci dà il
funzionalità per creare quel lambda ora
questi membri dei dati al momento della compilazione lo faranno
essere fornito con getter e setter
simile alle proprietà sintetiche in
Colin per renderlo più idiomatico sarà
fornire fornirà anche il file chiave
all’assegnazione della scorciatoia al file che puoi
aggiungi la funzione get prop qui nel
estensioni in modo che la funzione può essere
disponibile per qualsiasi progetto che si applica
il nostro plugin e infine il plug-in stesso
ciò ci aiuterà a legare e integrare
questi componenti nella nostra build
ciclo vitale
per prima cosa vogliamo aggiungere la nostra estensione in
l’oggetto del progetto usando il
estensioni correttamente proprietà ciò consente
noi per accedere ai dati forniti dal
consumatore plug-in e consente loro di utilizzare
la sua sintassi nella loro build il plug-in
la classe interagisce molto con il progetto
oggetto e il Gradle fornisce a
funzione di configurazione nel progetto
oggetto per consentire una più concisa
sintassi inferendo l’oggetto del progetto
sarà usato nella seguente chiusura
puoi vedere nella seconda riga qui
estensioni del progetto per più conciso
esempio questo può essere dedotto da sim can
essere dedotto semplicemente come estensioni con
la chiusura di configurazione che esegue
esattamente come il primo esempio un altro
parte importante dei plugin è da fare
le attività a disposizione del progetto
dopo valutare la chiusura significa che se tu
vuoi che il blocco di codice venga chiamato una volta
tutta la fase di inizializzazione di Gradle
è stato completato diciamo che noi
voglio solo aggiungere le attività se le chiavi
sono stati effettivamente assegnati e cioè
facciamo nel dopo valutare chiusura a
consentire al consumatore plug-in di impostarlo
la loro build Gradle qui possiamo vedere come
uno userebbe quella spina che plug-in in
lo script build.gradle quindi non ci si
avere il nostro plug-in Gradle in Groovy
semplificando l’utilizzo dei tasti di Web API
ora vediamo come sarebbe se
proviamo a convertirlo in Kotlin
ecco la sintassi che dovresti
conosci già dal
introduzione in precedenza che ho dato al
lingua abbiamo due chiavi di campo
sono una lista e un file che ora è annullabile
non abbiamo bisogno che sia Nalla Balu dire
ma per questa demo voglio farcela
romanzo per mostrarti come affrontare il
interoperabilità delle API Java che sono
per natura na livello così Kotla ha bisogno di essere
in grado di interagire con quell’API e sapere
che non si tratta di entrare per favore
prestare attenzione alla prima linea aperta
qui dichiara che questa classe non lo è
final per default tutte le classi in Kotlin
sono definitive e questo sarà un problema quando
si tratta di costruire questo a Gradle
perché l’attività deve essere esplicitamente
esteso da via Gradle e fornisce
un proxy e dobbiamo contrassegnarlo come aperto
tale Gradle può ereditare da esso e
aggiungi la sua logica
ecco la versione di creare il file
funzione quando tradotta linea per linea
simile al groovy Kotlin non ha
verificate le eccezioni in modo tale da non essere coinvolte
l’eccezione sarà semplicemente elevata al
colletto qui abbiamo un’altra versione
questo è un po ‘più idiomatico che abbiamo
sostituito il ciclo for con un 4h e un
funzione letterale ma per di più
interessante qui è questa ultima riga qui
stiamo usando l’operatore del doppio colpo
ricorda come il file chiave è stato ben concepito
quello che stiamo dicendo qui con il doppio
l’operatore bang è quella chiave se il file chiave è
nullo
basta lanciare l’eccezione del puntatore nullo
e questo è un altro modo per affrontare
oggetti nullable e ja in con nullable
gli oggetti provenienti da java sono i nostri
versione del POJO come Gradle
estensione e questo usa la classe dati
da Colin ora stiamo guardando il
classe plug-in simile a prima che desideriamo
aggiungere l’estensione al progetto e
ancora una volta vogliamo usare il dopo valutare
qui per consentire l’estensione dell’estensione
la costruzione Gradle bene questo è più pulito
che l’esempio Java che ho mostrato
prima in questa fase sembra ancora
abbastanza prolisso e mi piacerebbe ulteriormente
migliorare su quello alcuni esempi la multa
loro prendono nome col detentore che sei
osservando ciò che non sta andando
completamento automatico quindi cosa possiamo fare per
semplificare questo bene utilizzando una coppia
funzioni di estensione possiamo assegnare a
configurare la funzione per il progetto nel
estensioni e estensioni di prima linea
la seconda linea sarà in grado di fare
il codice è molto più conciso e
comodo a quelli che vengono da groovy
quindi ecco l’ esempio di come appare
come prima e dopo usiamo quelli
funzioni di estensione per ripulirlo voi
possiamo vedere nel secondo esempio come noi
andare verso un più dichiarativo e
groovy come sintassi così ora abbiamo il
versione finale del nostro plugin in Colin
proprio come con la versione groovy che aggiungiamo
la proroga dopo la valutazione è
fatto per creare un’attività per creare un file
in base ai dati di estensione che erano
fornito è dichiarativo
bello e familiare – sviluppatori groovy
ma è coerente con il Kotlin
è potenzialmente già nel tuo Android
app se usi anko o pattern simili
nella tua app Android tutto il tuo codice può
inizia ad assomigliare anche a questo
Credo che questo riduca il contesto
commutazione l’overhead e permette
una mossa più veloce tra diversi livelli
della pila
So che ho incontrato un caso di grandi dimensioni
sviluppatori che hanno un po ‘di
ansia e saltellando nella loro corporatura
strumenti provenienti da app Android e I
spero che qualcosa come questo possa iniziare
per renderlo un po ‘più accessibile
abbiamo parlato di molte informazioni qui
oggi ci sono grandi risorse su
il web per aiutare a scavare più in profondità la
la lingua prima è la documentazione ufficiale
sono una grande risorsa di apprendimento con a
una tonnellata di informazioni mi consiglia di iniziare da lì
i Kotlin Cohens sono un ottimo modo per
impara e gioca con Kotlin nel tuo
browser è un IDE interattivo anko is
quel fantastico plugin che ho mostrato prima
è open source a cui puoi scavare
è abbastanza bello sostituire l’ XML
layout
Non lo userei necessariamente in
produzione so che alcune app sono ma
è bello vedere come
evolve c’è anche il Gradle ufficiale
repo che ha esempi di utilizzo di Kotlin
e costruire script ora ce n’era un altro
il discorso tenuto da Jake Wharton dura davvero
anno adore dev che si tuffa molto più a fondo
e usando Kotlin nello sviluppo di Android
Raccomando di vedere che c’è anche
stato un sacco di altri grandi discorsi Kotlin
uscendo di recente dalla scena Android
se si voleva ulteriori informazioni sull’uso
questo in Android questo esempio
Il plug-in Gradle è open source e questo
uno che abbiamo costruito oggi e in Scozia
la versione vive in questo repository su github
questi sono tutti link cliccabili dal
le diapositive saranno condivise più persone
usa e contribuisci a Kotlin più velocemente
tutti possiamo avere un linguaggio moderno per
i nostri lavori giornalieri dal momento che Google potrebbe prendere un
mentre per ufficialmente sancire Kotlin per
Android se mai lo fanno tocca a noi
la comunità per guidare al meglio
pratiche in avanti mentre Google possiede
Android è un ecosistema open source
e siamo tutti responsabili per aver reso
meglio può prendere alcune domande ora
e se non vuoi dirlo
forte quindi sono felice di parlare in seguito
pure loro
per il tuo tempo oggi ti ringrazio molto
Ciao
abbiamo ottenuto una domanda dal ABS che è
dove il catalano ha il supporto per i pelucchi
in Android Studio adesso
l’attrezzatura per lo sfilacciamento è molto utile
il generale è un fantastico Jake oggi
ha introdotto il supporto lint in 104 è
un po ‘recente 103 quindi è recente
ma io non credo che ci sia un sacco di
strumenti di pelatura pronti all’uso per
cose in cotone che potresti desiderare
essere il controllo per tanto essere solo l’Android
quelli che corri non lo so
ci sono domande dal
il pubblico ha sorpreso nessuno mi sta chiedendo
sugli aspetti negativi di Collin, sì, forse
si potrebbe dire qualcosa che mi
intendo dire che non è il primo
strumenti di partito costruiti da
Il team di Android quindi è decisamente in esecuzione
tempi di fatturazione un po ‘più lenti sono più lenti
c’è ancora Finnick enos nell’IDE se
stai usando un sistema di build alternativo
come se ne avessi un po ‘
problemi a farlo funzionare è
sicuramente un ambiente in rapido movimento quindi
gli strumenti ci arriveranno ma è così
sicuramente un work in progress è così
qualcosa che vorresti provare –
oh assolutamente assolutamente ragazzi
l’ angolo no, intendo per noi che abbiamo avuto
più squadre in uber che sono state
lo stavo investigando usando
testare cose diverse per un po ‘
mentre so che ce ne sono stati molti
altre squadre Pinterest ne hanno alcune
codice scritto in esso so che i quadrati hanno funzionato
a Kotlin un po ‘su alcuni dei loro
roba è sicuramente in arrivo e
sarà un ottimo modo per farlo
le tue app ma è sicuramente da quando è così
ancora in evoluzione è un ecosistema e il
due collegamenti in arrivo intorno ad esso è
qualcosa di cui essere attenti circa la
migrazione va bene, grazie cravatta e il
per favore dagli una mano e ricordati di
valutare la sessione
tu
Please follow and like us: