Scala Programming pour Android

J’ai suivi le tutoriel chez Scala et Android avec Scala 2.7.3 final. L’application Android qui en résulte fonctionne, mais même l’application la plus élémentaire prend plusieurs minutes (!) Pour être compilée et nécessite une compression de 900 kb , ce qui constitue un obstacle pour les applications mobiles. De plus, l’EDI manque de mémoire de temps en temps. Je suppose que dex n’est pas fait pour les grandes bibliothèques comme la scala-library .

  • Donc, ma question est la suivante: Quelqu’un at-il réellement fait cela et y a-t-il un remède à cela?

J’ai écrit quelques applications Android de base dans Scala, rien de trop épique. N’étant pas un programmeur Java, on m’a suggéré d’utiliser un “treeshake”, un ami m’a expliqué que cela supprime toutes les bibliothèques inutiles des fichiers jar .

Je ne l’ai pas documenté, mais j’ai trouvé que quelqu’un d’autre avait déjà:

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

Proguard n’est pas la seule solution, vous pouvez trouver quelque chose qui convient à votre stream de travail ou qui convient mieux à votre environnement.

De plus, google vient de réaliser JACK, qui traite beaucoup de réduction des temps de construction et de mémoire, voir https://source.android.com/source/jack.html

Vous pouvez maintenant utiliser le plugin Android pour Gradle pour créer des applications Android dans Scala. Il incorpore l’outil ProGuard pour éliminer le gras du fichier APK résultant, et semble donc répondre à vos besoins.

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

Il existe également un plugin pour le sbt de générateur basé sur Scala: sbt-android-plugin .

Pour des tutoriels et des exemples, voir aussi la page “Exploring Android” de Stéphane Micheloud: http://lamp.epfl.ch/~michelou/android/

J’ai vérifié cette solution détaillée avec Eclipse 3.7, Scala 2.10 et le plug-in AndroidProguardScala v50:

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

Tout fonctionne bien. Une application de test simple avec une classe d’activité principale scalafied ne prend que 38 Ko. Les projets de bibliothèques sont pris en charge. Proguard est activé lors de l’exportation du projet.

Si vous utilisez maven, utilisez android-scala-test comme modèle de démarrage. Cela fonctionne très bien pour moi hors des sentiers battus.

Scaloid est un wrapper d’API Android écrit en Scala qui vous aide à écrire votre programme Android en Scala.

Le développement d’applications Android pour Scala est en constante évolution. La meilleure façon de le faire actuellement apparaît à SBT en conjonction avec android-sdk-plugin , qui est maintenu * et fonctionne bien pour moi dans mon projet Scala / Android. Un exemple assez récent qui démontre l’utilisation de ce plugin avec le Scaloid déjà mentionné peut également être trouvé .

S’il vous plaît noter que cette question est un exemple typique d’une question avec des réponses obsolètes sur Stack Overflow. Cette réponse deviendra probablement obsolète à un moment donné.

* Les autres projets basés sur SBT mentionnés dans ce fil de réponse ne semblent pas avoir de code écrit pour eux au cours des six derniers mois au moment de la rédaction. Ils peuvent avoir des problèmes de compatibilité avec les nouvelles versions de Scala et SBT.

Vous pouvez utiliser le Scala sur Android sans SBT, construit en externe par Gradle pour créer des applications Android. https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle est un outil de construction plus natif pour Android que SBT.

Il existe un bon exemple de concept de solution côté client et serveur Scala, et un outil de développement progressif pour IntelliJ IDEA.

Une avancée majeure: les classes de base sont communes aux clients et aux serveurs.

https://github.com/ghik/akkdroid

Bon tutoriel pour IDEA et android-plugin: http://fxthomas.github.io/android-plugin/

Le plus gros problème avec Scala sur Android concerne les temps de compilation.

Peut-être en raison de la classe Proguard, le décapage se fait avec le plug-in IDEA13 / Scala sur un Dual Quad Core (8 processeurs). E5450 Xeon avec 8 Go peut prendre deux minutes ou plus.

Je suis simplement retourné à Java après avoir terminé un grand projet Scala Android car les temps de compilation étaient trop frustrants.