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í:
- Con ProGuard, ¿cuál es el impacto en la estrategia de pruebas?
- ¿Hay una manera de determinar si es posible llamar a un dialog.dismiss () sin vacío try-catch bloque?
- Cómo administrar la autenticación / autorización para las solicitudes de usuarios enviadas desde aplicaciones móviles nativas que llaman a Play2! -Scala REST services
- Scala + Android: ¿Alguien construye y depura con éxito en Eclipse?
- Tiempo de construcción largo con sbt android-plugin
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?
- Android, Scala y Proguard
- IntelliJ Idea 12 + Android + Scala hoy en día
- Android + Scala + Intelli 13
- ¿Cómo integrar Scala en la plataforma Android principal?
- Uso de una biblioteca Scala para una aplicación de Android
- Casting un objeto java a objeto en Scala
- ¿Cómo extender ImageView en una aplicación Android Scala?
- Alternativas a java en android
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 enviar datos multipart / form a un servidor web desde android?
- Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado 'android: Theme.Material.Light'