最近想搞android,scala又是我比较喜欢的语言,于是乎,就想搞个他们的结合体。
搞这个环境被折磨了好久,从下载android sdk到IDE,再到版本兼容,基本上能碰到的问题都碰了个遍。
先说android sdk的下载吧。
为了多下载几个android platform,特意买了vpn。如果大家没有android的版本需求的话,直接去android developer里面下载最新版本即可(mac和win7使用同一家的vpn,win7被各种完暴),如果其他api版本例如 api11下载不下来的话,请放弃,要么找个人发给你也行。
IDE的话,本人先用了scalaIDE ,再用了原生eclipse+scala插件,最后又尝试了android eclipse +scala插件,要么scala jar包不兼容,要么就不明所以的错误。最后只能用IDEA Community Edtion。
接下来就是使用sbt下载jar包的问题了。由于刚开始是用的win7,即使挂上vpn,那个速度也不能忍受。最后的方案是,关闭vpn,用迅雷下载jar包,下载完了后,手动塞到特定的文件夹去。然后在使用 gen-idea命令的时候,会下载源码+javadoc,这个搞了半天也没关闭javadoc的下载,后来问了下老猪。
在~/.sbt/sbt.sbt中 添加 transitiveClassifiers in Global := Seq(Artifact.SourceClassifier)
执行命令 gen-idea sbt-classifiers
未测试过,但应该OK。
用scala开发android的话,最好使用scaloid框架,它节约了不少代码量。至于如何节约,请参考https://github.com/pocorall/scaloid。
调试的时候,给idea下来了sbt插件,然后将make构建指令改为sbt的 android:package命令。
即使不使用scaloid框架,也需要android-sdk-plugin https://github.com/pfn/android-sdk-plugin
创建第一个scala android项目,在android-sdk-plugin 里已经又详细的介绍,这里稍微啰嗦一点。
1.使用idea直接创建一个android项目。
2.创建project文件夹,并添加两个文件,build.properties ,plugins.sbt
3.在plugins.sbt 里写你要以来的插件基本上,也就这两个
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.2.16")
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
4.在build.properties里面写入 sbt运行版本,例如 sbt.version=0.13.2
5.在根目录上创建build.sbt
import android.Keys._
android.Plugin.androidBuild
name := "name"
scalaVersion := "2.11.0"
proguardCache in Android ++= Seq(
ProguardCache("org.scaloid") % "org.scaloid"
)
proguardOptions in Android ++= Seq("-dontobfuscate", "-dontoptimize", "-dontwarn scala.collection.mutable.**")
libraryDependencies += "org.scaloid" %% "scaloid" % "3.4-10"
scalacOptions in Compile += "-feature"
run <<= run in Android
install <<= install in Android
6.在sbt内运行 gen-sbt
基本工作就结束了。