Scala 語(yǔ)言開發(fā)Andorid ,開發(fā)環(huán)境的搭建(二)

Scala 語(yǔ)言開發(fā)Andorid ,開發(fā)環(huán)境的搭建(二)

什么是 sbt ?

上一篇文章介紹過(guò),sbt 就是和 maven ,ant 類似的自動(dòng)構(gòu)建工具。
那 sbt 有什么優(yōu)勢(shì)呢?

  1. 相對(duì)其他構(gòu)建工具更快的編譯速度,只編譯修改過(guò)的文件以及引用的第三方庫(kù)依賴
  2. triggered execution 特性方便做測(cè)試驅(qū)動(dòng)的開發(fā)
  3. 依據(jù)類和依賴使用 Scala 的解析器
  4. sbt 是基于 Scala ,所以可以靈活的使用 Scala 構(gòu)建工程
  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 配置文件

在一個(gè)小項(xiàng)目中一兩個(gè) sbt 文件已經(jīng)足夠了,當(dāng)時(shí)隨著項(xiàng)目的擴(kuò)展有可能要同時(shí)管理多個(gè) sbt 文件

一般情況下我們習(xí)慣使用 build.sbt 作為文件的名稱,當(dāng)然你也可以使用任何的名字。

根目錄下的 sbt 文件

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

看到這里你可能會(huì)還好奇,sbt 和 Scala 的配置文件有什么區(qū)別

一般推薦,sbt 文件作為項(xiàng)目的主要設(shè)定文件,而 scala 用于設(shè)置第三方依賴或者版本信息等

編寫build.sbt

下面一步一步寫出項(xiàng)目到build.sbt 文件

表達(dá)式

在我們的定義文件了,我們只需要關(guān)注設(shè)置的表達(dá)式

下面的實(shí)例顯示了項(xiàng)目版本號(hào)命名等基本信息,還有 項(xiàng)目中使用的 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

不難發(fā)現(xiàn)上面的例子 使用 := 作為連接符

另外還可以使用其他的連接符
+= 添加多一個(gè)元素
++= 添加多個(gè)元素
例如

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

添加第三方庫(kù)依賴

和 gradle 一樣,其實(shí)庫(kù)的添加分兩種
一是添加本地 jar 包
二是添加遠(yuǎn)程倉(cāng)庫(kù)庫(kù)

添加 jar 包

使用 jar 包最簡(jiǎn)單到方式是直接把 jar 放到下面目錄,這樣項(xiàng)目就會(huì)自動(dòng)導(dǎo)入 jar 包

/src/main/libs

除此之外還能使用自定義到路徑

unmanagedBase := baseDirectory.value / "custom_lib"

遠(yuǎn)程依賴

遠(yuǎn)程依賴使用是 ivy 到遠(yuǎn)程管理倉(cāng)庫(kù),同樣你可以使用 += 或者 ++= 到導(dǎo)入一個(gè)或多個(gè)依賴
先看看導(dǎo)入一個(gè)到基本表達(dá)式

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

導(dǎo)入多個(gè)

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")

上面可見(jiàn),可以使用 % 作為分割符,那 %% 又代表上面意思呢。其實(shí)為何配合不同版本的 scala ,需要不同依賴, %% 就是解決這個(gè)問(wèn)題的,例如上面的 "org.specs2" %% "specs2-core" sbt 構(gòu)建工具就根據(jù)不同情況選擇合適的 org.specs2 或者 specs2-core 庫(kù)。

添加 sbt 插件

在目錄 project 下有一個(gè) plugin.sbt 文件,只需要 配置相關(guān)的信息就能方便安裝對(duì)應(yīng)的插件。為了更加方便使用 sbt 管理我們的 Android 工程,可以使用一些插件讓開發(fā)過(guò)程中更加方便,這里說(shuō)一個(gè)常用的插件
sbt-android,詳細(xì)使用和配置的可以看開發(fā)文檔。這里只演示如何最快的安裝。只需要在 plugin.sbt 添加一行便可以完成安裝

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

接著在 根目錄下的 build.sbt 中使用我們的插件

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

這樣遍可以使用這個(gè)插件提供的一些功能,例如 compile(編譯),android:run(運(yùn)行),android:package-release(打包)等操作。

此外插件還提供了打包的配置方案如下面設(shè)置簽名文件的路徑等信息

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

apkSigningConfig in Android := Option(
  PromptPasswordsSigningConfig(
    keystore = new File(Path.userHome.absolutePath + "/.android/signed.keystore"),
    alias = "my-password"))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • Scala 語(yǔ)言開發(fā)Andorid ,開發(fā)環(huán)境的搭建 厭倦 Java 繁瑣的語(yǔ)法,為了更優(yōu)雅的開發(fā) Android...
    WooiiiWooiii閱讀 6,402評(píng)論 3 7
  • 整理書架的時(shí)候忽然就看到了自己的日記,厚厚一疊活頁(yè)紙。其實(shí)早就一點(diǎn)印象都沒(méi)有了,但它卻以那樣深刻的形式證明了自己的...
    翙翙濛萌閱讀 251評(píng)論 0 0

友情鏈接更多精彩內(nèi)容