scala android
Scala可用于构建Android应用程序,以替代Java或Kotlin。 与他们不同,在Scala中使用SBT设置Android项目并不是一件容易的事,这会让我们头疼。 为了展示如何做到这一点,我们将使用用于SBT的Android SDK插件来创建新的项目模板。
必备工具
为了在Scala中开发Android应用,您需要最少的工具集: SBT和Android SDK 。
安装SBT
您可以使用Homebrew在Mac OSX上安装SBT。
$ brew install sbt
要在其他操作系统上安装SBT,您可以按照官方文档中的说明进行操作 。
安装Android SDK
您可以从开发者网站下载最新版本的Android SDK,然后按照安装说明进行操作。 另外,您可以安装Android Studio和Android SDK以及模拟器。
设置ANDROID_HOME环境变量
在Mac OSX / Linux上,您只需导出变量
$ export ANDROID_HOME=path_to_your_android_sdk
或将其添加到您的bash_rc
或bash_profile
。
注意:在Mac OSX上,如果安装了Android Studio,则Android SDK通常位于/Users/your_user_name/Library/Android/sdk/
添加SBT插件
安装适用于SBT的Android SDK插件的最简单方法是在全球范围内安装。 为此,您需要在SBT plugins文件夹中创建一个文件:
~/.sbt/0.13/plugins/android.sbt
并添加以下行:
addSbtPlugin("org.scala-android" % "sbt-android" % "1.7.0")
创建Android项目
让我们为我们的Android项目创建一个文件夹:
$ mkdir my-project
$ cd my-project
现在,我们将使用SBT插件来创建模板项目。 首先,运行SBT:
$ sbt
然后,使用插件创建项目。
> gen-android <package_name> <project_name>
例如:
> gen-android com.codurance scala_on_android
创建的项目结构如下所示:
my-project/
|-- project/
| |-- android.sbt
| |-- build.properties
|-- src/
| |-- androidTest/
| |-- java/
| |-- com/
| |-- codurance/
| |-- Junit3MainActivityTest.java
| |-- Junit4MainActivityTest.java
| |-- main/
| |-- res/
| // Android resorces folders
| |-- scala/
| |-- com/
| |-- codurance/
| |-- MainActivity.scala
| |-- AndroidManifest.xml
|-- build.sbt
|-- lint.xml
SBT插件将创建一个项目结构,其中包含运行Android项目所需的最少文件,以及用于运行仪器测试的设置。 请注意,生成的测试类使用Java,而MainActivity
使用Scala。
最有趣的文件是build.sbt
。 我添加了一些注释来解释每一行的目的。
// Version of the Scala runtime
scalaVersion := "2.11.8"
// Use the Android plugin
enablePlugins(AndroidApp)
// Add support for vector drawables
useSupportVectors
// Android version code (Same as versionCode on Gradle projects)
versionCode := Some(1)
// Android version name (Same as versionName on Gradle projects)
version := "0.1-SNAPSHOT"
// Instrumentation tests runner (Same as testInstrumentationRunner on Gradle projects)
instrumentTestRunner :=
"android.support.test.runner.AndroidJUnitRunner"
// Android platform target (Same as targetSdkVersion on Gradle projects)
platformTarget := "android-24"
// Java compile options
javacOptions in Compile ++= "-source" :: "1.7" :: "-target" :: "1.7" :: Nil
// Libraries
libraryDependencies ++=
"com.android.support" % "appcompat-v7" % "24.0.0" ::
"com.android.support.test" % "runner" % "0.5" % "androidTest" ::
"com.android.support.test.espresso" % "espresso-core" % "2.2.2" % "androidTest" ::
Nil
我们甚至不需要使用SBT插件来生成此模板。 如果我们希望制作自己的最小项目,则可以手动为SBT和Android创建项目结构,并仅添加所需的设置。
运行项目
您将需要连接的Android设备或正在运行的模拟器 。
完成此操作后,最后一步是从sbt运行应用程序:
> android:run
您也可以从终端而不是SBT运行它:
$ sbt android:run
关于build.sbt的更多选项
build.sbt
文件中还可以包含其他有趣的选项。 其中一些是:
// Application name
name := "scala_on_android"
// Min Android SDK version supported
minSdkVersion := "15"
// Override 'android:run', to use just 'run' instead
run <<= run in Android
与Android Studio集成
从这一点出发,您可以使用文本编辑器和sbt在Scala中开发Android应用程序。 但是能够使用官方的IDE,这会很好,它提供了许多有用的工具。 也可以使用IntelliJ,但在本文中我将不做详细介绍。
在开始之前,我们需要为Android Studio安装Scala和SBT插件 。
要导入我们的项目,请打开Android Studio并选择Import project (Eclipse, ADT, Gradle, etc.)
。
选择Import project from external module
,然后选择SBT
:
在Project SDK选项上选择您的Android SDK,然后检查Sources
, Javadocs
以及Sources for SBT and plugins
:
在“ Project Settings
/ Modules
选择项目模块,然后单击+
,然后在“ Framework
部分下单击“添加Android
”。 在“结构”选项卡上,将所有/.idea/modules
路径替换为/src/main
:
现在已经建立了项目,我们可以尝试运行它。 创建一个新的运行/调试配置。 选择Android App
并为其命名(例如app
)。
在General
选项卡上,选择模块。 我们还需要配置如何使用SBT运行应用程序。 Before launch
部分,单击-
删除默认的Gradle-aware Make
任务。
最后,单击+
,创建一个新的SBT
任务,并添加android:run
。 选中Run in current module
选项:
从现在开始,您可以使用与任何用Java或Kotlin编写的应用程序相同的方式来运行该应用程序。
结论
Kotlin看起来仍然更适合Android:除其他优点外,它还具有安装简便,更好的IDE支持和更小的运行时间。 但是,使用Scala和SBT的可能性使开发人员可以在Scala中构建后端或希望使用高级功能性编程功能来构建复杂的应用程序。
翻译自: https://www.javacodegeeks.com/2016/10/setting-scala-android.html
scala android