天天看點

構造Scala開發環境并建立ApiDemos示例項目

從2011年開始寫Android ApiDemos 以來,Android的版本也更新了很多,目前的版本已經是4.04。ApiDemos中的例子也增加了不少,有必要更新Android ApiDemo示例解析系列文章(當然之前的文章還是有用的,依然可以作為參考)。為了不重複之前的内容,我們準備使用Scala語言開發Android應用,随着例子的逐漸解析,我們會把ApiDemos的例子的代碼依次修改為Scala代碼,并使用Robujuice 來注入View,關于Scala程式設計可以參考部落格scala開發教程 ,關于Robujuice的介紹可以參考Android RoboGuice 使用指南

我們開發Android應用使用的IDE為Intellij (這也是新版Android Studio 基于的版本)。

1. 安裝Scala開發環境 ,請參考開始神奇的Scala程式設計之旅

2. 安裝IDEA Scala插件 使用IntelliJ IDEA開發Scala應用

3. 安裝Android SDK

4. 導入ApiDemos示例到Intellij,這裡我們使用Android-17 目錄下

構造Scala開發環境并建立ApiDemos示例項目

為友善起見,ApiDemos的項目可以在github網站上複制 https://github.com/guidebee/ApiDemos 一般來說每次更新都會打上當天的日期作為标記,以便參考。

5.為Android項目配置Scala Facet,在導入的ApiDemos項目,使用File -> Project Structure -> Facets

構造Scala開發環境并建立ApiDemos示例項目

6. 為項目添加Scala 庫檔案, 使用 File -> Project Structure -> Libraries

構造Scala開發環境并建立ApiDemos示例項目

scala-library.jar 檔案可以在Scala安裝目錄 的libs下找到

7. 确認之前添加的Scala Facet為module的dependency. 你可以檢視子產品的dependency File -> Project Structure -> Modules -> Dependencies

構造Scala開發環境并建立ApiDemos示例項目

并配置compiler plugins (可選)

構造Scala開發環境并建立ApiDemos示例項目

注意:選取的Android平台需要使用JDK7 ,這是因為目前最新版的proguard還不支援JDK8.

8. 配置proguard ,使用下面的proguard-project.txt 檔案,這個檔案可以使用大多數的項目,你将這個檔案添加到Android項目中

對于Intellij 12 ,使用 File → project settings → modules → select module(s) → compiler tab → enable proguard

對于Intellij 13 ,使用 File → project settings → modules → select module(s) → compiler tab → check Run Proguard checkbox

構造Scala開發環境并建立ApiDemos示例項目

注意在配置proguard清單時,同時也需添加Android SDK預設的檔案 /android-sdk-home/tools/proguard/proguard-android.txt 預設情況已經在項目的配置中了。

之後我們就可以和編譯普通Java開發的Android應用一樣編譯Scala代碼,使用這種配置,你可以任意混合使用scala 和 Java 語言,當然你不能在同一個檔案中混合使用,如有Scala代碼存放在.scala檔案中,所有java代碼還是存放在.java檔案中,在github的項目中,有兩個執行個體的.java檔案 ExampleActivity.java 和 SignInActivity.java .我們把它們先修改成scala代碼

1

import

android.app.Activity

2

import

android.os.Bundle

3

4

class

ExampleActivity 

extends

Activity {

5

6

override

def

onCreate(savedInstanceState

:

Bundle) {

7

super

.onCreate(savedInstanceState)

8

// The activity is being created.

9

}

10

11

protected

override

def

onStart() {

12

super

.onStart()

13

// The activity is about to become visible.

14

}

15

16

protected

override

def

onResume() {

17

super

.onResume()

18

// The activity has become visible (it is now "resumed").

19

}

20

21

protected

override

def

onPause() {

22

super

.onPause()

23

// Another activity is taking focus (this activity is about to be "paused").

24

}

25

26

protected

override

def

onStop() {

27

super

.onStop()

28

// The activity is no longer visible (it is now "stopped")

29

}

30

31

protected

override

def

onDestroy() {

32

super

.onDestroy()

33

// The activity is about to be destroyed.

34

}

35

}

其實這兩個檔案ApiDemos并沒有用到它們,我們正好可以用它們來測試下Scala的開發環境是否配置好,編譯這個項目,如果你在編譯後的目錄out/production/ApiDemos找到 ExampleActive.class 說明IDE編譯Scala代碼成功了。

構造Scala開發環境并建立ApiDemos示例項目

最後項目可以在github.com 下載下傳 https://github.com/guidebee/ApiDemos

繼續閱讀