scala android_在Android上设置Scala

scala android

Scala可用于构建Android应用程序,以替代Java或Kotlin。 与他们不同,在Scala中使用SBT设置Android项目并不是一件容易的事,这会让我们头疼。 为了展示如何做到这一点,我们将使用用于SBT的Android SDK插件来创建新的项目模板。

必备工具

为了在Scala中开发Android应用,您需要最少的工具集: SBTAndroid 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_rcbash_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安装ScalaSBT插件

要导入我们的项目,请打开Android Studio并选择Import project (Eclipse, ADT, Gradle, etc.)

选择Import project from external module ,然后选择SBT

android上的scala-import-sbt

在Project SDK选项上选择您的Android SDK,然后检查SourcesJavadocs以及Sources for SBT and plugins

Scala-on-android_import-sdk

在“ Project Settings / Modules选择项目模块,然后单击+ ,然后在“ Framework部分下单击“添加Android ”。 在“结构”选项卡上,将所有/.idea/modules路径替换为/src/main

scala-android_proj-结构模块

现在已经建立了项目,我们可以尝试运行它。 创建一个新的运行/调试配置。 选择Android App并为其命名(例如app )。

General选项卡上,选择模块。 我们还需要配置如何使用SBT运行应用程序。 Before launch部分,单击-删除默认的Gradle-aware Make任务。

在Android上运行scala-调试配置

最后,单击+ ,创建一个新的SBT任务,并添加android:run 。 选中Run in current module选项:

在启动sbt-android-run之前在android_run上运行scala

从现在开始,您可以使用与任何用Java或Kotlin编写的应用程序相同的方式来运行该应用程序。

结论

Kotlin看起来仍然更适合Android:除其他优点外,它还具有安装简便,更好的IDE支持和更小的运行时间。 但是,使用Scala和SBT的可能性使开发人员可以在Scala中构建后端或希望使用高级功能性编程功能来构建复杂的应用程序。

翻译自: https://www.javacodegeeks.com/2016/10/setting-scala-android.html

scala android

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值