在Android Studio中使用与Java的Scala

我在Android Studio 1.2.2中安装了1.5.2 Scala插件。 我有一个以Java编码的现有(function)项目。 我在Scala中添加了一个简单的类来replace现有的Java类,只是为了试用它。 IDE似乎validation了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从Java中定义的Purchase改为正常解决。 Scala代码是:

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

尝试build立良率: 错误:找不到符号类Purch

Purch类的Scala代码位于app / build / main / scala / net.from.apprise目录中。 同样,Java源代码在app / build / main / java / net.from.apprise中。 AS看到Scala代码,并且如果有的话发布错误。 但类之间没有解决办法。

我需要做一些特别的事情,还是我可以忽略一些愚蠢的东西? AS的configuration? 命名约定?

Solutions Collecting From Web of "在Android Studio中使用与Java的Scala"

Android Studio或IntelliJ的Scala插件只是帮助您编写Scala代码的工具。 它是如此聪明,它使得可以在IDE中引用Java中的scala类(以及其他方式),我认为你的意思是“IDE似乎validation了Scala代码”。

如果你正在开发一个Android应用程序,并使用Gradle构build工具,那么我build议你使用Gradle Scala插件 。 它正在与官方android插件gradle。 然后,这个插件将使用运行应用程序中使用的.class结尾将您的scala文件构build为字节码。

下面是我的骨架gradle文件看起来像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给出了“找不到匹配的构造函数”的错误