web-dev-qa-db-fra.com

Scala Programmation pour Android

J'ai suivi le tutoriel à Scala et Android avec Scala 2.7.3 final. L’application résultante Android fonctionne, mais même l’application la plus élémentaire prend plusieurs minutes (!) À compiler et nécessite 900 kb compressé, ce qui est un arrêt pour les applications mobiles. De plus, le IDE manque de mémoire de temps en temps. Je suppose que dex n'est pas conçu pour les grandes bibliothèques comme le scala-library.

  • Ma question est donc la suivante: est-ce que quelqu'un a réellement fait cela et y a-t-il un remède pour cela?
253
Lemmy

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

Je ne l'ai pas documenté, mais j'ai découvert que quelqu'un d'autre a 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 flux de travail ou qui convient mieux à votre environnement.

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

126
user75240

Vous pouvez maintenant utiliser le plugin Android de Gradle pour créer des applications Android dans Scala. Il intègre l'outil ProGuard pour supprimer le gras du fichier APK résultant, afin semble répondre à vos besoins.

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

43
Jason Voegele

Il existe également un plugin pour le constructeur basé sur Scala sbt : sbt-Android-plugin .

22
Jan Berkel

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

19
Lukas Rytz

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 la classe d’activité principale scalafiée ne prend que 38 Ko. Les projets de bibliothèques sont pris en charge. Proguard est activé lors de l'exportation du projet.

15
Mikaël Mayer

Développer Android applications pour Scala est en constante évolution. Le meilleur moyen de le faire actuellement semble être utilisé par 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 montre l’utilisation de ce plugin avec le scaloid déjà mentionné peut également disponible .

Veuillez noter que cette question est un exemple typique de question avec des réponses obsolètes sur le dépassement de capacité. Cette réponse deviendra probablement obsolète à un moment donné.

* Les autres projets 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.

7
DCKing

Si vous utilisez maven, utilisez Android-scala-test comme modèle de démarrage. Cela fonctionne très bien pour moi prêt à l'emploi.

Scaloid est un wrapper d'API Android écrit en Scala qui vous aidera à écrire votre Android programme à la Scala.

6
pocorall

Vous pouvez utiliser les Scala sur Android sans SBT, il a été construit de manière 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 Scala concept de solution côté client et serveur, et outil de création de niveaux en tant que moyen avancé pour IntelliJ IDEA workbench.

Grande avance que les classes de base sont communes pour le client et le serveur.

https://github.com/ghik/akkdroid

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

4
mikowiec

Le plus gros problème avec Scala sur Android, ce sont les temps de compilation).

Peut-être en raison de la classe Proguard, la compilation avec le plug-in IDEA13/Scala sur un E5450 Xeon à double cœur (8 UC) avec 8 Go peut prendre deux minutes ou plus.

Je suis simplement retourné à Java après avoir terminé un largish Scala Android car les temps de compilation ont été trop frustrants.

2
user2476398