Uso de Scala con Java en Android Studio

Instalé el complemento 1.5.2 Scala en Android Studio 1.2.2. Tengo un proyecto existente (de funcionamiento) codificado en Java. He añadido una clase trivial en Scala para reemplazar una clase Java existente sólo para probarlo. El IDE parece validar el código de Scala pero la referencia a la clase del código de Java no está resuelta. No sé por qué. He mezclado con éxito los idiomas bajo SBT en el lado del servidor de este proyecto.

La referencia de código Java se ve así:

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; 

recorte…

Purch se cambió de Purchase que se define en Java y estaba resolviendo OK. El código Scala es:

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

Intentos para generar rendimiento: error: no se puede encontrar la clase de símbolo Purch

El código Scala para la clase Purch vive en el directorio app / build / main / scala / net.from.apprise. Del mismo modo, la fuente Java está en app / build / main / java / net.from.apprise. AS ve el código Scala, y emite errores si hay alguno. Pero no hay resolución entre las clases.

¿Necesito hacer algo especial o estoy mirando algo tonto? Configuración de AS? ¿Convenio de denominación?

El Scala Plugin para Android Studio o IntelliJ es sólo una herramienta para ayudarte a escribir código scala. Es tan inteligente que hace posible hacer referencia a las clases scala de java (y otra forma) en IDE, que creo que quería decir con "IDE parece validar el código Scala".

Si está desarrollando una aplicación android y utiliza una herramienta de compilación gradle entonces le recomiendo que utilice el complemento scala de Gradle . Está trabajando con el plugin androide oficial para gradle. Este plugin es entonces hacer las instrucciones para la construcción de sus archivos scala en bytecode con final .class que se utiliza en la aplicación en ejecución.

A continuación se muestra cómo se ve mi archivo de gradle de esqueleto para el plugin 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"] } 

Y los archivos .java y .scala pueden ser mezclados en el mismo directorio del proyecto, como en:

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

Cuando usted sigue pasos de @Renatol (que es grande), usted encontrará un error:

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

Así que echa un vistazo a esta respuesta para continuar el proceso:

Gradle-android-scala-plugin da "No se encontró el constructor que coincide con" error

  • ¿Cómo puedo ejecutar las pruebas de Android con sbt?
  • Dependencia no resuelta: com.hanhuy.sbt # android-sdk-plugin; 1.3.19: no encontrado
  • Scala, Android y Eclipse
  • Biblioteca "libmaliinstr.so" no encontrado
  • Eclipse, Android, Scala hecho fácil, pero aún no funciona
  • Uso conveniente de Android XmlResourceParser?
  • Cómo orientar Android con Scala 2.8 Trunk builds
  • ¿Actores alejados del akka en androide?
  • Uso de constantes Java desde Scala en Android
  • Los actores de Scala en android
  • Android (en Scala): StackOverflowError depende de cuándo iniciar un hilo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.