Scala 语言开发Andorid ,开发环境的搭建(二)

Scala 语言开发Andorid ,开发环境的搭建(二)

什么是 sbt ?

上一篇文章介绍过,sbt 就是和 maven ,ant 类似的自动构建工具。
那 sbt 有什么优势呢?

  1. 相对其他构建工具更快的编译速度,只编译修改过的文件以及引用的第三方库依赖
  2. triggered execution 特性方便做测试驱动的开发
  3. 依据类和依赖使用 Scala 的解析器
  4. sbt 是基于 Scala ,所以可以灵活的使用 Scala 构建工程
  5. 支持 java 和 Scala 的混合编程

基本目录

工程的根目录下的文件和文件夹,下面看看文件夹里面到底是什么东西。

源码

根下的 src 目录就是存放源码文件的地方呢

src/
  main/
    resources/
       <files to include in main jar here>
    scala/
       <main Scala sources>
    java/
       <main Java sources>
  test/
    resources
       <files to include in test jar here>
    scala/
       <test Scala sources>
    java/
       <test Java sources>

sbt 配置文件

在一个小项目中一两个 sbt 文件已经足够了,当时随着项目的扩展有可能要同时管理多个 sbt 文件

一般情况下我们习惯使用 build.sbt 作为文件的名称,当然你也可以使用任何的名字。

根目录下的 sbt 文件

build.sbt
project/
  plugin.sbt
  Build.scala
  <Other Scala files>

看到这里你可能会还好奇,sbt 和 Scala 的配置文件有什么区别

一般推荐,sbt 文件作为项目的主要设定文件,而 scala 用于设置第三方依赖或者版本信息等

编写build.sbt

下面一步一步写出项目到build.sbt 文件

表达式

在我们的定义文件了,我们只需要关注设置的表达式

下面的实例显示了项目版本号命名等基本信息,还有 项目中使用的 Scala 版本的配置信息

name := "scala-on-android"

organization := "com.fortysevendeg"

organizationName := "47 Degrees"

organizationHomepage := Some(new URL("http://47deg.com"))

version := 0.1.0

scalaVersion := 2.11.6

不难发现上面的例子 使用 := 作为连接符

另外还可以使用其他的连接符
+= 添加多一个元素
++= 添加多个元素
例如

scalacOptions ++= Seq("-feature", "-deprecation")

添加第三方库依赖

和 gradle 一样,其实库的添加分两种
一是添加本地 jar 包
二是添加远程仓库库

添加 jar 包

使用 jar 包最简单到方式是直接把 jar 放到下面目录,这样项目就会自动导入 jar 包

/src/main/libs

除此之外还能使用自定义到路径

unmanagedBase := baseDirectory.value / "custom_lib"

远程依赖

远程依赖使用是 ivy 到远程管理仓库,同样你可以使用 += 或者 ++= 到导入一个或多个依赖
先看看导入一个到基本表达式

libraryDependencies += groupID % artifactID % revision [% configuration]

导入多个

libraryDependencies ++= Seq(
  aar("com.android.support" %  "cardview-v7" % "22.0.0"),
  aar("com.android.support" % "appcompat-v7" % "22.0.0"),
  aar("com.android.support" % "recyclerview-v7" % "22.0.0"),
  aar("com.google.android.gms" % "play-services-base" % "6.5.87"),
  "com.typesafe.play" %% "play-json" % "2.3.6",
  "org.specs2" %% "specs2-core" % "2.4.15" % "test",
  "org.specs2" % "specs2-mock_2.11" %  "3.0-M2" % "test")

上面可见,可以使用 % 作为分割符,那 %% 又代表上面意思呢。其实为何配合不同版本的 scala ,需要不同依赖, %% 就是解决这个问题的,例如上面的 "org.specs2" %% "specs2-core" sbt 构建工具就根据不同情况选择合适的 org.specs2 或者 specs2-core 库。

添加 sbt 插件

在目录 project 下有一个 plugin.sbt 文件,只需要 配置相关的信息就能方便安装对应的插件。为了更加方便使用 sbt 管理我们的 Android 工程,可以使用一些插件让开发过程中更加方便,这里说一个常用的插件
sbt-android,详细使用和配置的可以看开发文档。这里只演示如何最快的安装。只需要在 plugin.sbt 添加一行便可以完成安装

addSbtPlugin("org.scala-android" % "sbt-android" % "1.7.1")

接着在 根目录下的 build.sbt 中使用我们的插件

android.Plugin.androidBuild
platformTarget in Android := "android-21"

这样遍可以使用这个插件提供的一些功能,例如 compile(编译),android:run(运行),android:package-release(打包)等操作。

此外插件还提供了打包的配置方案如下面设置签名文件的路径等信息

packageRelease <<= (packageRelease in Android).dependsOn(setDebugTask(false))

apkSigningConfig in Android := Option(
  PromptPasswordsSigningConfig(
    keystore = new File(Path.userHome.absolutePath + "/.android/signed.keystore"),
    alias = "my-password"))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容