Scala Программирование для Android

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

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

Ответ 1

Я написал несколько базовых приложений для 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

Ответ 2

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

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

Ответ 4

Для учебных пособий и примеров см. также страницу Stéphane Micheloud "Изучение Android": http://lamp.epfl.ch/~michelou/android/

Ответ 5

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

fooobar.com/questions/27676/...

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

Ответ 6

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

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

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

Ответ 7

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

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

Ответ 8

Вы можете использовать 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/

Ответ 9

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

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

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