在Eclipse下用Scala开发Android程序

一、 Why Scala?

最直接的想法就是:

先把Scala当作更好的Java用

保护好对Scala语言的已有投资

二、 Why Eclipse?

已经习惯了Eclipse

Scala-IDE for Eclipse 有了很大改进

...

三、 配置环境

3.1 下载安装android-sdk

通过SDK Manager按需下载相关的packages。(我这里主要有Tools, Android 4.1, Android 2.2, Extras/Android support library)

使用AVD Manager创建一个avd, Target为Android 4.1, 选中SNAPSHOT为enabled

将tools和platform-tools目录添加到PATH环境变量

3.2 安装Eclipse

3.3 安装配置ADT plugin for Eclipse

3.4 安装Scala IDE for Eclipse

3.5 安装AndroidProguardScala Nature"

AndroidProguardScala这个插件集成了Proguard, 主要用来去掉工程依赖包中用不到的类, 有了它,就算引入Scala运行时库和其他依赖包, 也能保证发布包apk足够的苗条(等下我们通过一个实际的工程来验证)

四、用Scala写个HelloWorld Android应用

4.1 使用向导创建Android工程并配置

使用Eclipse向导创建一个"Android Applicaton Project", 选择创建一个Blank Activity即可

给工程添加"Scala Nature"

工程, 右键 -> Configure -> Add Scala Nature

给工程添加"AndroidProguardScala Nature"

工程, 右键 -> Add AndroidProguardScala Nature

4.2 相关代码

修改res/layout/activity_main.xml, 给TextView设置一个id

android:id="@+id/hello"

将MainActivity.java删除, 用Scala重写

代码如下:

package com.example.helloworld

import android.os.Bundle

import android.app.Activity

import android.view.Menu

import android.widget.TextView

class MainActivity extends Activity {

override def onCreate(savedInstanceState: Bundle) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

val hello = findViewById(R.id.hello).asInstanceOf[TextView]

hello.setText(hello.getText + " 世界!")

}

override def onCreateOptionsMenu(menu: Menu): Boolean = {

getMenuInflater().inflate(R.menu.activity_main, menu)

true

}

}

4.3 运行

工程右键 -> Run As -> Android Application

默认会使用之前创建的Android Virtual Device 仿真器运行

4.4 导出apk

工程右键 -> Android Tools -> Export Singed Application Package ..., 按向导一步一步走即可.

导出的apk大概300k, 可以与Java版的做一个对比, Java版的大概150K. Scala版的HelloWorld 体积上个人是可以接受的.

五、 总结

用Scala开发Android应用算是走通了. 从上面看, 生成的apk体积方面完全不用担心, 至于像memory footprint等问题, 要等深入之后再来看.

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐