Использование Scala с Java в Android Studio

Я установил плагин 1.5.2 Scala в Android Studio 1.2.2. У меня есть существующий (функционирующий) проект, закодированный на Java. Я добавил в Scala тривиальный класс, чтобы заменить существующий Java-класс, чтобы попробовать его. IDE, похоже, проверяет код Scala, но ссылка на класс из Java-кода не решена. Я не знаю, почему. Я успешно смешал языки под SBT на стороне сервера этого проекта.

Ссылка на Java-код выглядит так:

package net.from.apprise; import java.util.*; import java.io.Serializable; import org.json.*; class ItemRelation extends SharableRecord implements Serializable, JSONable { public static final String TAG = "IR"; String listKey; String description; String barCode; Purch purch; 

чик …

Purch было изменено с Purchase которое определено на Java, и было разрешено OK. Код Scala:

 package net.from.apprise class Purch { val whatever:Int = 1 } 

Попытки построить доход: ошибка: не удается найти класс символов Buy

Код Scala для класса Buy живет в каталоге app / build / main / scala / net.from.apprise. Аналогично, источник Java находится в app / build / main / java / net.from.apprise. AS видит код Scala и выдает ошибки, если они есть. Но нет разрешения между классами.

Нужно ли мне что-то делать, или я не замечаю ничего глупого? Конфигурация AS? Соглашение об именовании?

Плагин Scala для Android Studio или IntelliJ – это всего лишь инструмент, помогающий вам писать код scala. Это настолько умно, что позволяет ссылаться на классы scala из java (и наоборот) в среде IDE, что, я думаю, вы имели в виду, что «IDE, похоже, подтверждает код Scala».

Если вы разрабатываете приложение для Android, и вы используете инструмент построения градиентов, я рекомендую вам использовать плагин Scrada Scala. Он работает с официальным плагином Android для градации. Затем этот плагин создает инструкции для создания ваших файлов scala в байт-код с завершением .class, который используется в запуске приложения.

Ниже приведен пример моего файла скелетного градиента для плагинов scala:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' // scala from https://github.com/saturday06/gradle-android-scala-plugin classpath "jp.leafytree.gradle:gradle-android-scala-plugin:1.4" } } android { ... } apply plugin: 'com.android.application' apply plugin: "jp.leafytree.android-scala" dependencies { ... compile 'org.scala-lang:scala-library:2.11.6' } // Configuration for scala compiler options as follows tasks.withType(ScalaCompile) { // If you want to use scala compile daemon scalaCompileOptions.useCompileDaemon = true // Suppress deprecation warnings scalaCompileOptions.deprecation = false // Additional parameters scalaCompileOptions.additionalParameters = ["-feature"] } 

И файлы .java и .scala могут быть смешаны в том же каталоге проектов, что и в:

 app/java/com.example /ItemRelation.java /Purch.scala 

Когда вы будете следовать шагам @Renatol (это здорово), вы столкнетесь с ошибкой:

 Could not find matching constructor for: org.gradle.api.internal.tasks.DefaultScalaSourceSet(java.lang.String, org.gradle.api.internal.file.BaseDirFileResolver) 

Поэтому взгляните на этот ответ, чтобы продолжить процесс:

Gradle-android-scala-plugin дает ошибку «Не удалось найти соответствующий конструктор»