Programmazione Scala per Android


258

Ho seguito il tutorial su Scala e Android con Scala 2.7.3 final. L'app per Android risultante funziona ma anche l'applicazione più semplice richiede alcuni minuti (!) Per essere compilata e necessita di una compressione di 900 kb , che è un blocco dello spettacolo per le applicazioni mobili. Inoltre, l'IDE esaurisce la memoria di tanto in tanto. Presumo dexnon sia fatto per grandi biblioteche come la scala-library.

  • Quindi la mia domanda è: qualcuno ha effettivamente fatto questo e c'è qualche cura per questo?

Risposte:


128

Ho scritto alcune applicazioni Android di base in Scala, niente di troppo epico. Non essendo un programmatore Java mi è stato suggerito di usare un "albero", mi è stato spiegato da un amico che questo rimuove tutte le librerie non necessarie dai file jar .

Non l'ho documentato, ma ho scoperto che qualcun altro ha già:

http://chneukirchen.org/blog/archive/2009/04/programming-for-android-with-scala.html

Proguard non è l'unica soluzione, potresti trovare qualcosa che si adatta al tuo flusso di lavoro o è più adatto al tuo ambiente.

Inoltre, Google ha appena realizzato JACK, che si occupa di ridurre notevolmente i tempi di compilazione e memoria, vedere https://source.android.com/source/jack.html


3
Grazie! Dovrò provarlo. Mi chiedo se possa essere usato con Eclipse (usando i plugin Scala e Android)
Lemmy

36
Lemmy - c'è qualche motivo per cui non hai accettato questa risposta? Forse hai trovato una soluzione migliore?
Bostone,

3
Nella mia esperienza, la stretta di albero non è abbastanza buona per la maggior parte dello scala code non banale. Non è abbastanza aggressivo.
James Moore,

45

Ora puoi utilizzare il plug-in Android per Gradle per creare applicazioni Android in Scala. Incorpora lo strumento ProGuard per tagliare il grasso dal file APK risultante, quindi sembra soddisfare le tue esigenze.

https://github.com/jvoegele/gradle-android-plugin/wiki


Funziona alla grande! Nessuna delle soluzioni che ho provato ha funzionato immediatamente, ma il tuo plug-in Gradle mi ha dato un feedback utile in modo da poter facilmente risolvere ciò che non andava.
Mendelt,

Jason, ci stai ancora lavorando? L'ultimo commit è stato effettuato 9 mesi fa e da allora il grado è stato superato.
Peter Ajtai,

Peter, lo sviluppo si è interrotto a causa del fatto che Gradle è ora il sistema di generazione nativo per Android.
Jason Voegele,

22

C'è anche un plug-in per il builder basato su Scala sbt : sbt-android-plugin .


1
Questo plugin non è compatibile con le versioni più recenti di SBT. Stai ancora mantenendo questo plugin? Un plugin SBT che è compatibile con le versioni più recenti di questo il android-sdk-plugin .
DCKing


15

Ho verificato questa soluzione dettagliata con Eclipse 3.7, Scala 2.10 e il plug-in AndroidProguardScala v50:

https://stackoverflow.com/a/11084146/1287856

Tutto funziona bene. Una semplice applicazione di test con classe di attività principale scalata richiede solo 38 KB. Sono supportati progetti di biblioteche. Proguard viene attivato durante l'esportazione del progetto.


3
Sembra fantastico. Come sono i tempi di compilazione con questa soluzione durante la distribuzione su un dispositivo (rispetto alla distribuzione di un progetto Java Android comparabile)?
evilcandybag,

1
Il tempo di compilazione è di circa 10 secondi durante la distribuzione su un dispositivo. Spero che un giorno sia più veloce.
Mikaël Mayer,

6
Ci vogliono circa 1 secondo ora con l'ultimo Android SDK e plug-in, a causa di una nuova buona implementazione della cache.
Mikaël Mayer,

7

Lo sviluppo di app Android per Scala è in continua evoluzione. L'attuale modo migliore per farlo sembra SBT in congiunzione con il plugin android-sdk , che è mantenuto * e funziona bene per me nel mio progetto Scala / Android. Un esempio un po 'recente che dimostra l'uso di questo plugin con il già citato Scaloid può essere trovato .

Si noti che questa domanda è un tipico esempio di domanda con risposte obsolete su StackTranslate.it. Questa risposta probabilmente diventerà obsoleta anche ad un certo punto.

* Gli altri progetti basati su SBT menzionati in questo thread di risposte non sembrano avere un codice scritto per loro negli ultimi sei mesi al momento della scrittura. Potrebbero avere problemi di compatibilità con le versioni più recenti di Scala e SBT.


6

Se usi maven, usa android-scala-test come modello di avvio. Funziona benissimo per me pronto all'uso.

Scaloid è un wrapper per API Android scritto in Scala che ti aiuta a scrivere il tuo programma Android in stile Scala.


4

Puoi utilizzare Scala su Android senza SBT, costruito esternamente da Gradle per creare applicazioni Android. https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle è lo strumento di costruzione più nativo per Android di SBT.

C'è un buon esempio del concetto di soluzione lato client e server Scala e strumento di costruzione gradle come anticipo per il banco di lavoro IDEA IntelliJ.

Grande progresso nel fatto che le classi principali sono comuni per client e server.

https://github.com/ghik/akkdroid

Buon tutorial per IDEA e plugin per Android: http://fxthomas.github.io/android-plugin/


3

Il problema più grande con Scala su Android sono i tempi di compilazione.

Forse a causa delle compilazioni di stripping della classe Proguard con plug-in IDEA13 / Scala su un Dual Quad Core (8 CPU) E5450 Xeon con 8 GB può richiedere due minuti o più.

Sono semplicemente tornato a Java dopo aver completato un progetto di Scala per Android poiché i tempi di compilazione erano troppo frustranti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.