簡體   English   中英

在Android Studio中使用Scala和Java

[英]Using Scala with Java in Android Studio

我在Android Studio 1.2.2中安裝了1.5.2 Scala插件。 我有一個用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已經從在Java中定義的Purchase更改,並且正在解決問題。 Scala代碼是:

package net.from.apprise

class Purch {
   val whatever:Int = 1
}

嘗試建立產量: 錯誤:找不到符號類Purch

Purch類的Scala代碼位於app / build / main / scala / net.from.apprise目錄中。 同樣,Java源代碼位於app / build / main / java / net.from.apprise中。 AS看到Scala代碼,如果有的話會發出錯誤。 但是課間沒有解決方案。

我需要做一些特別的事情還是我忽略了一些愚蠢的事情? AS的配置? 命名慣例?

Android Studio或IntelliJ的Scala插件只是一個幫助您編寫scala代碼的工具。 它非常聰明,可以在IDE中引用來自java(以及其他方式)的scala類,我認為你的意思是“IDE似乎驗證了Scala代碼”。

如果您正在開發Android應用程序並使用gradle構建工具,那么我建議您使用Gradle scala插件 它正在與gradle的官方android插件一起使用。 然后,此插件將指示將scala文件構建為字節碼,其結尾為.class,用於運行應用程序。

下面是scala插件的骨架gradle文件的樣子:

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給出“找不到匹配的構造函數”錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM