Using Scala with Java in Android Studio

后端 未结 2 2362
鱼传尺愫
鱼传尺愫 2021-02-20 09:27

I installed the 1.5.2 Scala plugin in Android Studio 1.2.2. I have an existing (functioning) project coded in Java. I added a trivial class in Scala to replace an existing Jav

2条回答
  •  清歌不尽
    2021-02-20 09:48

    The Scala Plugin for Android Studio or IntelliJ is only a tool for helping you at writing scala code. It is so smart it makes possible to reference the scala classes from java (and other way around) in IDE, that I think you meant with "IDE seems to validate the Scala code".

    If you are developing an android application and you use a gradle build tool then I recommend to you that you use the Gradle scala plugin. It is working with official android plugin for gradle. This plugin is then making instructions for building your scala files into bytecode with .class ending which is used in running application.

    Below is how my skeleton gradle file looks like for scala plugin:

    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"]
    }
    

    And .java and .scala files can be mixed in the same project directory, as in:

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

提交回复
热议问题