Progtwigción Scala para Android

He seguido el tutorial en Scala y Android con Scala 2.7.3 final. La aplicación de Android resultante funciona, pero incluso la aplicación más básica tarda varios minutos (!) En comstackrse y necesita 900 kb comprimidos, que es un tope de progtwig para aplicaciones móviles. Además, el IDE se queda sin memoria de vez en cuando. Supongo que dex no está hecho para grandes bibliotecas como scala-library .

  • Entonces mi pregunta es: ¿Alguien realmente ha hecho esto y hay alguna cura para esto?

He escrito algunas aplicaciones básicas de Android en Scala, nada demasiado épico. Al no ser un progtwigdor de Java, me sugirieron usar un “treehake”, un amigo me explicó que esto elimina todas las bibliotecas innecesarias de los archivos jar .

No lo he documentado, pero descubrí que alguien más ya tiene:

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

Proguard no es la única solución, es posible que encuentre algo que se adapte a su flujo de trabajo o que sea más adecuado para su entorno.

Además, Google acaba de darse cuenta de que JACK, que se ocupa de reducir bastante los tiempos de comstackción y memoria, consulte https://source.android.com/source/jack.html.

Ahora puede usar el complemento de Android para Gradle para crear aplicaciones de Android en Scala. Incorpora la herramienta ProGuard para recortar la grasa del archivo APK resultante, por lo que parece satisfacer sus necesidades.

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

También hay un complemento para el constructor basado en Scala sbt : sbt-android-plugin .

Para obtener tutoriales y ejemplos, consulte también la página “Exploración de Android” de Stéphane Micheloud: http://lamp.epfl.ch/~michelou/android/

Verifiqué esta solución detallada con Eclipse 3.7, Scala 2.10 y el complemento AndroidProguardScala v50:

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

Todo funciona bien Una aplicación de prueba simple con clase de actividad principal escalada solo toma 38 Kb. Los proyectos de bibliotecas son compatibles. Proguard se activa al exportar el proyecto.

Si usa maven, use android-scala-test como una plantilla de inicio. Funciona muy bien para mí desde el primer momento.

Scaloid es un contenedor API de Android escrito en Scala que te ayuda a escribir tu progtwig Android al estilo Scala.

El desarrollo de aplicaciones de Android para Scala está en constante evolución. La mejor forma actual de hacerlo parece SBT en conjunto con el android-sdk-plugin , que se mantiene * y funciona bien para mí en mi proyecto Scala / Android. También se puede encontrar un ejemplo algo reciente que demuestra el uso de este complemento con el ya mencionado Scaloid.

Tenga en cuenta que esta pregunta es un ejemplo típico de una pregunta con respuestas obsoletas en Stack Overflow. Es probable que esta respuesta también se desactualice en algún momento.

* Los otros proyectos basados ​​en SBT mencionados en este hilo de respuestas no parecen tener código escrito para ellos en los últimos seis meses en el momento de la escritura. Pueden tener problemas de compatibilidad con las versiones más nuevas de Scala y SBT.

Puede usar Scala en Android sin SBT, construido externamente por Gradle para crear aplicaciones de Android. https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle es una herramienta de construcción más nativa para Android que SBT.

Hay un buen ejemplo del concepto de solución de cliente y servidor de Scala, y de la herramienta de construcción de gradle como avance para el banco de trabajo IntelliJ IDEA.

Gran avance de que las clases básicas son comunes para el cliente y el servidor.

https://github.com/ghik/akkdroid

Buen tutorial para IDEA y Android-plugin: http://fxthomas.github.io/android-plugin/

El mayor problema con Scala en Android son los tiempos de comstackción.

Posiblemente debido a las comstackciones de eliminación de clase Proguard con IDEA13 / Scala en un Dual Quad Core (8 CPU) E5450 Xeon con 8 GB puede tomar dos minutos o más.

Simplemente volví a Java después de completar un gran proyecto de Android Scala ya que los tiempos de comstackción eran demasiado frustrantes.