Scala Программирование для Android - PullRequest
252 голосов
/ 24 января 2009

Я следовал учебнику на Scala и Android с Scala 2.7.3 final. Получившееся приложение для Android работает, но даже самое простое приложение занимает несколько минут (!) Для компиляции и нуждается в сжатии 900 КБ , что является ограничителем для мобильных приложений. Кроме того, в среде IDE время от времени не хватает памяти. Я предполагаю, что dex не предназначен для больших библиотек, таких как scala-library.

  • Итак, мой вопрос: кто-нибудь на самом деле делал это и есть ли лекарство от этого?

Ответы [ 9 ]

126 голосов
/ 20 апреля 2009

Я написал несколько базовых приложений для Android на Scala, ничего особенного. Не будучи Java-программистом, мне предложили использовать "treehake", мне объяснил друг, что это убирает все ненужные библиотеки из файлов jar .

Я не задокументировал это, но обнаружил, что кто-то другой уже имеет:

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

Proguard - не единственное решение, вы можете найти что-то, что подходит для вашего рабочего процесса или больше подходит для вашей среды.

Кроме того, Google только что реализовал JACK, который имеет дело со значительным сокращением времени сборки и памяти, см. https://source.android.com/source/jack.html

43 голосов
/ 13 апреля 2010

Теперь вы можете использовать плагин Android для Gradle для создания приложений Android в Scala. Он включает в себя инструмент ProGuard для обрезки жира из итогового файла APK, поэтому, кажется, соответствует вашим потребностям.

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

22 голосов
/ 17 июня 2010

Существует также плагин для строителя на базе Scala sbt : sbt-android-plugin .

19 голосов
/ 14 июля 2010

Учебные пособия и примеры см. Также на странице «Исследование Android» Стефана Мишеля: http://lamp.epfl.ch/~michelou/android/

15 голосов
/ 18 июня 2012

Я проверил это подробное решение с Eclipse 3.7, Scala 2.10 и плагином AndroidProguardScala v50:

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

Все отлично работает. Простое тестовое приложение с масштабированным основным классом активности занимает всего 38 КБ. Библиотечные проекты поддерживаются. Proguard активируется при экспорте проекта.

7 голосов
/ 26 мая 2014

Разработка приложений для Android для Scala постоянно развивается. Текущий лучший способ сделать это, кажется, SBT в сочетании с android-sdk-plugin , который поддерживается * и хорошо работает для меня в моем проекте Scala / Android. Несколько более поздний пример, демонстрирующий использование этого плагина с уже упомянутым Scaloid, также может быть найден .

Обратите внимание, что этот вопрос является типичным примером вопроса с устаревшими ответами о переполнении стека. Этот ответ, скорее всего, тоже устареет.

* Другие проекты на основе SBT, упомянутые в этой ветке ответов, по-видимому, не имеют кода, написанного для них за последние шесть месяцев на момент написания. У них могут быть проблемы совместимости с более новыми версиями Scala и SBT.

6 голосов
/ 15 октября 2012

Если вы используете maven, используйте android-scala-test в качестве шаблона запуска. Он отлично работает для меня из коробки.

Scaloid - это оболочка Android API, написанная на Scala, которая поможет вам написать программу для Android в стиле Scala.

4 голосов
/ 07 декабря 2013

Вы можете использовать Scala на Android без SBT, он построен снаружи Gradle для создания приложений Android. https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle - более родной инструмент для сборки Android, чем SBT.

Имеется хороший пример концепции клиентского и серверного решения Scala, а также инструмент построения Gradle в качестве усовершенствования для IntelliJ IDEA.

Большой прогресс в том, что базовые классы являются общими для клиента и сервера.

https://github.com/ghik/akkdroid

Хороший учебник для IDEA и Android-плагина: http://fxthomas.github.io/android-plugin/

2 голосов
/ 01 октября 2014

Самая большая проблема со Scala на Android - это время компиляции.

Возможно, из-за разборки компиляций класса Proguard с плагином IDEA13 / Scala на двухъядерном (8-CPU) процессоре E5450 Xeon с 8 ГБ может занять две минуты или более.

Я просто вернулся к Java после завершения крупного проекта Scala для Android, поскольку время компиляции было слишком удручающим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...