IntelliJ Idea 12 + Android + Scala в наше время

56

Как мне подсказывали, я просмотрел несколько статей, описывающих, как сделать IntelliJ Idea и Android и Scala работать вместе, но оказалось, что все они были написаны 1 или 2 года назад. И, вероятно, с тех пор что-то изменилось, и теперь есть другие решения для достижения этой цели. Конкретно, есть новое решение https://github.com/yareally/android-scala-intellij-no-sbt-plugin, для которого я не знаю, хорошо ли оно работает или нет.

У меня есть IntelliJ Idea 12, Android SDK, Scala, SBT и все остальные компоненты, установленные и настроенные. Остается только настроить IntelliJ Idea 12, чтобы он работал с Scala вместо Java для создания приложений для Android.

Пожалуйста, не закрывайте вопрос. Я видел предыдущие вопросы, похожие на мои, но, как я уже сказал, они устарели.

Вопрос в том, как мне это сделать сейчас (май 2013 г.)?

P.S. Я пробовал Android Development Studio, но я даже не смог запустить его из-за многих ошибок.

Теги:
intellij-idea
ide

5 ответов

21
Лучший ответ

Обновление: Вы можете прочитать учебник. Я написал о новой версии SBT-Android (0.7). Большинство ваших проблем необходимо решать там. Если это не так, то это проблема.


Обновление 2:. Справедливости ради, также ведется большая работа: android-sdk-plugin @pfn на GitHub.

Что касается ProGuard и времени сборки:

  • Я, я, предустановил большие библиотеки на своем устройстве с помощью sbt-android. Это полностью исключает ProGuard, но требует root.

  • android-sdk-plugin последняя версия может похвастаться новым кешем ProGuard (так же как AndroidProguardScala), что довольно мило и действительно устраняет ProGuard в большинстве случаев во время развитие.


В течение нескольких месяцев я вносил вклад в SBT-Android, поэтому я знаю это намного лучше, чем другие решения.

На данный момент плагин развивается быстро, используя:

  • Полная поддержка IntelliJ (спасибо SBTIdea) очень скоро (на самом деле, она уже работает, мне просто нужно отправить запросы на pull)
  • Автоматическая предварительная загрузка Scala на эмуляторе или в корневом устройстве (просто запустите android:preload-{device, emulator}, больше не требуется Proguard для разработки!)
  • Следует поддерживать простые Gradle проекты из коробки с минимальными усилиями (структура каталогов очень похожа)
  • Конфигурация намного проще (просто добавьте плагин и файл проекта, и вы настроены!)

Текущая версия не имеет большинства этих тонкостей, но они появляются в ближайшие недели. Некоторая документация, конечно, скоро последует очень быстро, с примерами и всем, что я придумаю.

Я рекомендую вам присоединиться к Scala в Android группе Google и поделиться своими мыслями, между прочим. Также есть канал #sbt-android на Freenode, если вы в IRC.

  • 1
    Вы не знакомы с github.com/yareally/android-scala-intellij-no-sbt-plugin ?
  • 2
    Он просто использует Proguard, чем SBT-Android занимался довольно давно. Так что да, я знаю, что он делает;)
Показать ещё 21 комментарий
8

Просто хотел перезвонить этому. Я использовал https://github.com/yareally/android-scala-intellij-no-sbt-plugin, хотя я обнаружил, что инструкции являются неопределенными, а не когда-либо использовавшими IntelliJ до этого.

Вероятно, вы все разобрались и довольны SBT, но для моих целей я просто хотел протестировать Scala на Android без дополнительных дополнительных звонков и свистков. Итак, вот некоторые мелочи, которые я должен был сделать, чтобы работать с файлом no-sbt-plugin:

В итоге я включил scala -compiler.jar(вместе с scala -library.jar и scala -reflect.jar) в качестве глобальной библиотеки: Изображение 3948

Таким образом, у компилятора есть доступ к библиотеке и коду отражения, иначе я получал ошибки. Если вы не включаете библиотеку, среда IDE жалуется, что компилятору нужна соответствующая библиотека, и если вы не включаете в себя отражение, оно выплевывает кучу ошибок во время компиляции, которые не могут найти отражение определений классов.

Я должен был включить scala -library.jar в качестве зависимости от модуля (который также имел побочный эффект включения его в раздел "Библиотеки" ): Изображение 3949

Прежде чем делать это, у меня был установлен плагин Scala, был создан проект Android и просто добавлен фасет Scala (игнорируйте настройки памяти, я обманывал): Изображение 3950

Наконец, мне пришлось решить некоторые оставшиеся ошибки компиляции, добавив несколько строк "-dontwarn" в файл proguard txt. Достаточно просто.

Работает как шарм. Пока что я не сделал ничего существенного, но я с нетерпением жду использования Scala в своем следующем Android-проекте.

  • 1
    Я думаю, что это можно сделать намного проще, щелкнув правой кнопкой мыши по проекту без фасета Scala, выбрав Add Framework Support ..., затем выбрав Scala.
5

Я написал библиотеку Scaloid, которая делает разработку Android более сжатой с помощью Scala.

Для быстрой отправной точки я написал проект hello-world maven для Scala + Android.

Я использую Intellij в качестве основной IDE, и он импортирует проект с очарованием.

  • 3
    Я бы хотел использовать sbt, а не maven.
  • 1
    Кажется, есть еще один репозиторий под названием hello-scaloid-sbt: github.com/pocorall/hello-scaloid-sbt
Показать ещё 3 комментария
3

Я смотрел эту тему в течение нескольких месяцев, наконец, получил некоторое время, чтобы провести настоящие тесты.

Использование IntelliJ 13 с SBT 0.13 и Scala 2.10.3.

  • SBT-Android не обновлялся в течение нескольких месяцев. Я обнаружил, что инструкции устарели, и мне не удалось создать рабочий проект.

  • Работала android-sdk-plugin. Просто последовал простым шагам, и я получил "привет мир" на моем телефоне. Но импорт проекта SBT в IntelliJ не будет работать должным образом, потребуется несколько модификаций проекта вручную.

  • Я также попытался сначала создать проект Android, а затем добавить фреймворк Scala, но не работал, как я ожидал.

  • 0
    а как насчет Android Studio?
3

Я прошел через это около месяца назад, и мне удалось сделать его очень приятным, используя Gradle.

Вот результат: https://github.com/ghik/akkdroid

Это простой проект клиент-сервер с использованием Scala и Akka с клиентской стороны на Android, разработанный с помощью IntelliJ IDEA. Я знаю, что клиент-сервер на самом деле не имеет смысла с Akka, но это просто простой университетский проект, чтобы доказать, что эти технологии могут работать вместе.

Обратите внимание, однако, что gradle script в этом проекте предназначен только для создания проекта IDEA, он должен быть дополнительно расширен, чтобы иметь возможность выполнять правильную сборку приложений Android.

  • 0
    это работает с Android Studio?
  • 0
    @ Алекс Не пробовал, наверное нет.
Показать ещё 1 комментарий

Ещё вопросы

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