262 votes

Programmation Scala pour Android

J'ai suivi le tutoriel à l'adresse Scala et Android avec Scala 2.7.3 finale. L'application Android qui en résulte fonctionne mais même l'application la plus basique prend plusieurs minutes ( !) pour être compilée et a besoin de 900 kb compressé, ce qui est un obstacle pour les applications mobiles. De plus, l'IDE 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 .

  • Ma question est donc la suivante : quelqu'un a-t-il déjà fait cela et y a-t-il un remède à cela ?

128voto

Wade Mealing Points 4090

J'ai écrit quelques applications Android de base en Scala, rien de bien é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 de l'application Android. bocal des fichiers.

Je ne l'ai pas documenté, mais j'ai découvert que quelqu'un d'autre l'a déjà fait :

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

Proguard n'est pas la seule solution, vous trouverez peut-être quelque chose qui convient à votre flux de travail ou qui est plus adapté à votre environnement.

En outre, Google vient de réaliser JACK , qui permet de réduire considérablement les temps de construction et de mémorisation. https://source.Android.com/source/jack.html

3 votes

Merci. Je vais devoir l'essayer. Je me demande si on peut l'utiliser avec Eclipse (en utilisant les plugins Scala et Android).

37 votes

Lemmy - y a-t-il une raison pour laquelle vous n'avez pas accepté cette réponse ? Peut-être avez-vous trouvé une meilleure solution ?

3 votes

D'après mon expérience, treeshake n'est pas assez bon pour la plupart des codes scala non triviaux. Il n'est tout simplement pas assez agressif.

45voto

Jason Voegele Points 1063

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

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

0 votes

Fonctionne très bien ! Aucune des solutions que j'ai essayées n'a fonctionné, mais votre plugin Gradle m'a fourni des informations utiles qui m'ont permis de corriger facilement ce qui n'allait pas.

0 votes

Jason, tu travailles toujours sur ce projet ? Le dernier commit date d'il y a 9 mois et le grade a été modifié depuis.

0 votes

Peter, le développement a été interrompu parce que Gradle est maintenant le système de construction natif pour Android.

22voto

Jan Berkel Points 1678

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

1 votes

Ce plugin n'est pas compatible avec les dernières versions de SBT. Maintenez-vous toujours ce plugin ? Un plugin SBT qui est compatible avec les versions les plus récentes de ce Android-sdk-plugin .

19voto

Lukas Rytz Points 931

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

15voto

Mikaël Mayer Points 2408

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 simple application de test avec une classe d'activité principale scalafiée ne prend que 38Kb. Les projets de bibliothèques sont supportés. Proguard est activé lors de l'exportation du projet.

3 votes

Ça a l'air génial. Quels sont les temps de construction avec cette solution lors du déploiement sur un appareil (par rapport au déploiement d'un projet Java Android comparable) ?

1 votes

Le temps de construction est d'environ 10 secondes lors du déploiement sur un appareil. J'espère qu'il sera plus rapide un jour.

6 votes

Cela prend environ 1 seconde maintenant avec la dernière version du sdk et du plug-in Android, en raison d'une nouvelle implémentation du cache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X