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

230

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

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

9 ответов

129

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

  • 3
    Спасибо! Я должен буду попробовать это. Интересно, можно ли его использовать с Eclipse (используя плагины Scala и Android)
  • 35
    Лемми - есть ли причина, по которой ты не принял этот ответ? Возможно, вы нашли лучшее решение?
Показать ещё 2 комментария
42

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

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

  • 0
    Работает отлично! Ни одно из решений, которые я пробовал, не работало "из коробки", но ваш плагин Gradle дал мне полезную обратную связь, чтобы я мог легко исправить то, что пошло не так.
  • 0
    Джейсон, ты все еще работаешь над этим? Последний коммит был 9 месяцев назад, и с тех пор оценка была увеличена.
Показать ещё 1 комментарий
20

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

  • 1
    Этот плагин не совместим с новейшими версиями SBT. Вы все еще поддерживаете этот плагин? Плагин SBT , который совместим с новейшими версиями этого на андроид-СДК-плагин .
17

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

12

Я проверил это подробное решение с 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 активируется при экспорте проекта.

  • 3
    Это звучит потрясающе. Каково время сборки с этим решением при развертывании на устройстве (по сравнению с развертыванием сопоставимого проекта Java Android)?
  • 1
    Время сборки составляет около 10 секунд при развертывании на устройстве. Я надеюсь, что когда-нибудь это будет быстрее.
Показать ещё 1 комментарий
5

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

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

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

5

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

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

3

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

1

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню