Utilizza Scala su Android vale la pena? C'è un sacco di sovraccarico? I problemi?

Stavo pensando di creare un'applicazione su Android con Scala invece che la Java normale (o l'equivalente immagino). Ne vale la pena?

Qualsiasi problema e mal di testa inutili?

  • Problema di orientamento di frammenti di Android
  • Come posso controllare la chiusura SIM sul livello di applicazione Android?
  • biblioteca "libmaliinstr.so" non trovata ... in eclipse
  • Android: onSaveInstanceState non viene chiamato dall'attività
  • Errore di applicazione Android - duplica id 0x7f04000f, tag null o id parentesi 0x0 con un altro frammento per com.google.android.gms.maps.SupportMapFragment
  • L'emulatore di Virtual Box basato su Android 4.0 non è in grado di rilevare Bluetooth 4.0 da computer porttile
  • Android: disegnare bitmaps piastrellati con fondo o altri allineamenti simili a css background-position
  • Utilizzo dell'attributo HTML di dimensione in TextView
  • Come mettere a fuoco e mostrare la tastiera soft quando viene visualizzato un text EditText nella barra degli strumenti?
  • Come aggiungere titolo, snippet e icona a ClusterItem?
  • Come faccio a scoprire l'utilizzo della memory della mia applicazione in Android?
  • Come gonfiare la vista all'interno del frammento
  • 3 Solutions collect form web for “Utilizza Scala su Android vale la pena? C'è un sacco di sovraccarico? I problemi?”

    Lavorare con Scala dovrebbe essere per lo più indolore, in quanto il compilatore dex funziona solo con il bytecode – che è esattamente quello che produce Scala.

    Il tuo problema più grande è la dipendenza dalla libreria di scala, poiché Dex prevede che tutto sia in un singolo jar. Questo è meglio gestito con Proguard (che rimuoverà anche il codice inutilizzato e vi darà un eseguibile più piccolo, ideale per il cellulare)


    La migliore pratica attuale è quella di utilizzare SBT con il plugin Android; Prenderà cura di tutto per te: http://github.com/jberkel/android-plugin

    Se devi utilizzare Eclipse e il plugin fornito da Google, allora avrai una struttura di directory non standard. Ho anche scritto un articolo su come affrontare questo problema: http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android

    Ma essere avvertiti … ci vuole molto più sforzo in questo modo!

    C'è un discorso da ragazzi di bu.mp su Scala Days 2011.

    Disclaimer: Mentre parlano molto sulle questioni che hanno affrontato, l'esperienza complessiva è stata sicuramente positiva. Inoltre, questi erano i problemi di una particolare squadra e sono quelli minori.

    Sommario:

    • Utilizzo della memory. Le chiusure consumano la memory. Scala ha chiusure in tutto il luogo. Anche se non è un problema relativo (overheads di memory) sul tuo PC da tavolo, dovrebbe essere considerato quando si sviluppa per il telefono cellulare. Si può chiedere: come hanno risolto? Hanno avuto una caccia per uno stretto loop e poi ottimizzati (riscritti in scala / java senza scrupoli). (26 ° minuto) Penso che Java 8 con il supporto nativo di chiusura faciliterà questo problema La prossima release di scala sarà destinata alla piattaforma java 8 con un nuovo backend e mira ad una migliore prestazione. Discussione sulla roadmap è qui .
    • Compilatore più lento (come Michal Galpin ha detto che hanno 15 secondi per la compilazione di codice Java, circa un minuto per Scala e circa un ordine più di un valore per Proguard, ma notare che dipende dalla vostra base di codice e dalle macchine, ma sospetto che il rapporto sarà lo stesso). È particolarmente fastidioso quando si crea un interface utente, come pixel in movimento, pulsanti e così via, e desidera vedere rapidamente il risultato. (7 ° minuto)
    • Ci sono stati alcuni problemi con classi interne che sono abbastanza comuni per Android (vedi 23:00 per dettagli).
    • C'erano rari errori in scalac (scala compilatore) nelle scala-java-collezioni integerp. I problemi sono stati risolti scrivendo queste cose esplicitamente (sospetto che non sia affatto un sacco di boilerplate).

    Mentre parla di IDE troppo, non credo che sia un problema (guardi questo post, sull'ambiente Scala). I ragazzi che fanno Scala IDE e IntelliJ fanno bene il loro lavoro e il supporto IDE sta migliorandosi e meglio.

    Per i test di unità si potrebbe usare RoboSpecs (consente di eseguire test di unità all'interno di JVM, non all'interno dell'emulatore), che è più veloce.

    Uno dei problemi più grandi che mi sono imbattuto sono le limitazioni del formato dex (non più di 65536 riferimenti di metodo per file dex). La biblioteca Scala semplicemente non si inserisce nei limiti, perciò bisogna risolvere il problema che:

    • utilizzando Proguard che taglierà il grasso da scala lib. Ma è davvero lento sul mio computer porttile e sta perdendo tempo nella fase di sviluppo (ma è molto utile quando rilasci la tua applicazione al Google Play)
    • utilizzando la libreria predesciata . La cosa negativa è che questo progetto è un po 'abbandonato e contiene solo versione 2.9.0-1.
    • preinstallare la scala sul tuo telefono

    Alcuni affermano che ci sono problemi con gli IDE, ma le cose cambiano velocemente: la versione corrente dell'IDEA 12 di IntelliJ non solo ha un buon supporto di Scala come plugin, ma contiene anche UI Designer per Android. Inoltre, è ansible utilizzare Eclipse che dispone di un supporto sia da parte di Android (da parte di Google) che di Scala (da Typesafe). Android Studio (il nuovo IDE basato su IDEA che è stato annunciato su Google IO '13 e sviluppato da Google) support i plugin IDEA in questo modo Scala.

    Abbiamo discusso questo tema a Scala Lift Off London venerdì scorso e il consenso sembrava che generalmente funziona bene finché evitenetworking gli attori. Inoltre, il plugin sbt-android è stato fortemente consigliato. Il blog di Nathan Hamblen ha molti post su Android e quelli che hanno anche contrassegnato Scala hanno un sacco di cose da guadagnare da guardare.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.