Я выполнил руководство по Scala и Android с окончанием Scala 2.7.3. Полученное приложение для Android работает, но даже самое базовое приложение занимает несколько минут (!) Для компиляции и требует сжатия 900 кб, что является показом проб для мобильных приложений. Кроме того, у IDE время от времени заканчивается память. Я предполагаю, что dex
не предназначен для больших библиотек, таких как scala-library
.
Я написал несколько базовых приложений для Android в Scala, ничего более эпического. Не будучи Java-программистом, мне предложили использовать "treeshake", мне объяснил друг, что это вырезает все ненужные библиотеки из файлов jar.
Я не зарегистрировал это, но обнаружил, что у кого-то еще есть:
http://chneukirchen.org/blog/archive/2009/04/programming-for-android-with-scala.html
Proguard - это не единственное решение, вы можете найти что-то, что соответствует вашему рабочему потоку или более подходит для вашей среды.
Кроме того, Google только что осознал JACK, который имеет дело с довольно большим сокращением времени сборки и памяти, см. https://source.android.com/source/jack.html
Теперь вы можете использовать плагин Android для Gradle для создания приложений Android в Scala. Он включает инструмент ProGuard для обрезки жира из полученного файла APK, поэтому, похоже, отвечает вашим потребностям.
Существует также плагин для Scala -строительного строителя sbt: SBT-андроид-плагин.
Для учебных пособий и примеров см. также страницу Stéphane Micheloud "Изучение Android": http://lamp.epfl.ch/~michelou/android/
Я проверил это подробное решение с Eclipse 3.7, Scala 2.10 и плагином AndroidProguardScala v50:
https://stackoverflow.com/questions/9924015/eclipse-android-scala-made-easy-but-still-does-not-work
Все работает отлично. Простое тестовое приложение с классом основного класса scalafied занимает только 38 КБ. Поддерживаются проекты библиотек. Proguard активируется при экспорте проекта.
Разработка приложений для Android для Scala постоянно развивается. Текущий лучший способ сделать это представляется SBT в сочетании с android-sdk-plugin, который поддерживается * и хорошо работает для меня в моем Scala/Android-проект. Несколько недавний пример, демонстрирующий использование этого плагина с уже упомянутым Scaloid, может .
Обратите внимание, что этот вопрос является типичным примером вопроса с устаревшими ответами о переполнении стека. Этот ответ, скорее всего, устареет и в какой-то момент.
* Другие проекты на основе SBT, упомянутые в этом потоке ответов, по-видимому, не содержат для них кода за последние шесть месяцев на момент написания. Они могут иметь проблемы совместимости с более новыми версиями Scala и SBT.
Если вы используете maven, используйте android-scala-test в качестве шаблона запуска. Он отлично работает для меня из коробки.
Scaloid - это оболочка Android API, написанная в Scala, которая поможет вам написать свою программу для Android в стиле Scala.
Вы можете использовать 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/
Самая большая проблема с Scala на Android - это время компиляции.
Возможно, из-за компиляции класса Proguard с плагином IDEA13/ Scala на двухъядерном четырехъядерном процессоре (8-процессорный) E5450 Xeon с 8 ГБ может потребоваться две минуты или более.
Я просто вернулся на Java после завершения довольно большого проекта Scala Android, поскольку время компиляции было слишком расстраивающим.