web-dev-qa-db-fra.com

IntelliJ Idea 12 + Android + Scala de nos jours)

Comme cela m'a été suggéré, j'ai parcouru quelques articles décrivant comment faire fonctionner IntelliJ Idea et Android et Scala travailler ensemble, mais il s'est avéré qu'ils étaient tous écrits il y a 1 ou 2 ans. Et probablement, quelque chose a changé depuis ce temps et maintenant il y a d'autres solutions pour atteindre cet objectif. Concrètement, il y a une nouvelle solution https://github.com/yareally/Android -scala-intellij-no-sbt-plugin pour lequel je ne sais pas si cela fonctionne bien ou non.

J'ai IntelliJ Idea 12, Android SDK, Scala, SBT et tous les autres trucs installés et configurés. La seule chose qui reste est de configurer IntelliJ Idea 12 pour le faire fonctionner avec Scala au lieu de Java pour la création d'applications Android.

Veuillez ne pas fermer la question. J'ai vu les questions précédentes similaires aux miennes, mais, comme je l'ai dit, elles étaient dépassées.

La question est, comment puis-je le faire maintenant (mai 2013) ?

P.S. J'ai essayé Android Development Studio mais je n'ai même pas pu le lancer en raison de nombreuses erreurs.

56
Alan Coromano

Mise à jour: Vous pouvez lire le tutoriel que j'ai écrit sur la prochaine nouvelle version de SBT-Android (0.7). La plupart de vos préoccupations devraient y être traitées. S'ils ne le sont pas, c'est un problème.


Mise à jour 2: Par souci d'équité, il y a aussi un excellent travail en cours: Android-sdk-plugin par @pfn sur GitHub .

Concernant ProGuard et les temps de construction:

  • Je suis moi-même préchargement de grandes bibliothèques sur mon appareil avec sbt-Android. Cela élimine complètement ProGuard, mais nécessite un root.

  • La dernière version de Android-sdk-plugin Dispose d'un nouveau cache ProGuard (identique à AndroidProguardScala ), ce qui est plutôt pratique et élimine ProGuard dans la plupart des cas pendant le développement.


Je contribue à SBT-Android depuis quelques mois maintenant, donc je le connais beaucoup mieux que les autres solutions.

Pour l'instant, le plugin évolue rapidement, avec:

  • Prise en charge complète d'IntelliJ (merci à SBTIdea ) à venir très bientôt (En fait, cela fonctionne déjà, j'ai juste besoin d'envoyer les demandes de tirage)
  • Précharger automatiquement Scala sur un émulateur ou un appareil rooté (Il suffit d'exécuter Android:preload-{device, emulator}, Aucun Proguard n'est plus nécessaire pour le développement!)
  • Devrait prendre en charge de simples projets Gradle prêts à l'emploi avec un minimum d'effort (La structure du répertoire est très similaire)
  • La configuration est beaucoup plus facile (Ajoutez simplement le plugin et n fichier de projet et vous êtes prêt!)

La version actuelle n'a pas la plupart de ces subtilités, mais elles arriveront dans les semaines suivantes. Une documentation va bien sûr suivre très peu de temps après, avec des exemples et tout ce à quoi je penserai.

Je vous encourage à rejoindre le Scala sur Android Google Group et à partager vos réflexions, en passant. Il y a aussi un canal #sbt-Android Sur Freenode si vous aimez l'IRC.

21
F.X.

Je voulais juste sonner le coup. J'ai utilisé https://github.com/yareally/Android-scala-intellij-no-sbt-plugin , bien que j'ai trouvé les instructions vagues, n'ayant jamais utilisé IntelliJ auparavant.

Vous avez probablement tout réglé maintenant et vous êtes satisfait de SBT, mais pour mes besoins, je voulais juste tester Scala on Android sans tous les cloches et sifflets supplémentaires. Donc, voici quelques petites choses que je devais faire pour que le truc no-sbt-plugin fonctionne:

J'ai fini par inclure le scala-compiler.jar (avec le scala-library.jar et scala-reflect.jar) en tant que bibliothèque globale: enter image description here

De cette façon, le compilateur a accès à la bibliothèque et au code de réflexion, sinon j'obtenais des erreurs. Si vous n'incluez pas la bibliothèque, le IDE se plaint que le compilateur a besoin d'une bibliothèque associée, et si vous ne l'incluez pas, il crache un tas d'erreurs au moment de la compilation qu'il ne peut pas find reflète les définitions de classe.

J'ai également dû inclure scala-library.jar comme dépendance de module (ce qui a eu pour effet secondaire de l'inclure également dans la section Bibliothèques): enter image description here

Avant de faire tout cela, j'avais installé le plugin Scala, créé un projet Android, et simplement ajouté une facette Scala (ignorer les paramètres de la mémoire, j'étais en train de jouer): enter image description here

Enfin, j'ai dû résoudre quelques erreurs de compilation restantes en ajoutant quelques lignes "-dontwarn" au fichier proguard txt. Assez simple.

Fonctionne comme un charme. Je n'ai encore rien fait de substantiel avec cela, mais j'ai hâte d'utiliser Scala sur mon prochain Android projet.

8
drhr

J'ai écrit la bibliothèque Scaloid qui rend le développement Android plus concis avec Scala.

Pour un point de départ rapide, j'ai écrit un projet hello-world maven pour Scala + Android.

J'utilise Intellij comme un IDE principal, et il importe le projet avec charme.

5
pocorall

Je regarde ce fil depuis plusieurs mois, j'ai enfin eu le temps de faire les vrais tests.

Utilisation d'IntelliJ 13 avec SBT 0.13 et Scala 2.10.3.

  1. SBT-Android n'a pas été mis à jour depuis plusieurs mois. J'ai trouvé que les instructions étaient dépassées et je n'ai pas réussi à créer un projet fonctionnel.

  2. Le Android-sdk-plugin a fonctionné. Je viens de suivre les étapes simples et j'ai lancé "hello world" sur mon téléphone. Mais l'importation du projet SBT dans IntelliJ ne fonctionnera pas correctement, nécessitera quelques modifications de projet manuellement.

  3. J'ai également essayé de créer un projet Android Android d'abord, puis ajoutez Scala framework, mais je n'ai pas fonctionné comme je m'y attendais).

3
Madwyn

J'ai vécu cela il y a environ un mois et j'ai réussi à le faire fonctionner très bien en utilisant Gradle.

Voici le résultat: https://github.com/ghik/akkdroid

Il s'agit d'un simple projet client-serveur utilisant Scala et Akka, avec côté client sur Android, développé avec IntelliJ IDEA. Je sais que client-serveur n'a pas vraiment de sens avec Akka, mais ce n'est qu'un simple projet universitaire pour prouver que ces technologies peuvent fonctionner ensemble.

Notez cependant que le script gradle dans ce projet est uniquement destiné à générer IDEA, il doit être étendu pour pouvoir effectuer la bonne Android build d'application Android.

3
ghik