世の中は進んでいた。
「scalaでAndroidなんて茨の道っすよ…」みたいな感じでしたけど、なんか知らん間に充実していたようです
いやまあもちろん、あらゆることを試したわけではないのでまだ爆弾踏んでないだけでしょうけど…
しかし実にAndroid触るの2年ぶりじゃねこれ。
とりあえずやってみよう
目標
を使って Scala で 楽しく(?) Androidアプリ作る環境を構築する
試した環境
MacBook Air 未だに OSX 10.7
Android Studio を利用する場合
sdkも付随してくるのでbrewで入れなくても良いけど、環境変数にANDROID_HOMEを足しておく
export ANDROID_HOME="/Applications/Android Studio.app/sdk"
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools #を追加してもよいかも(brewの場合は不要)
とか
付属のものが嫌なら Android Studio を起動して
Configure > Project Defaults > Project Structure
で Android SDK locations を直しておくとか
sbtとか
もしこれからscalaを触るとかならsbt入れましょう、sbt
brew install sbt
Android Studio に付属する android sdk を使いたくなければ
brew install android-sdk
export ANDROID_HOME=/usr/local/opt/android-sdk
とか
あとdebug.keystoreを生成しておくと良いかも
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
# 作ったkeyは ~/.android 以下へ
android managerからSDKやらなにやら必要な物をDL
android
で立ち上がるあれから必要なモノをDLしましょう
一杯入れるとそれなりに時間かかりますので、お茶でも飲んで待ちましょう
buildできることを確認
ひな形ではないが、まずBuild出来るかを https://github.com/pocorall/hello-scaloid-sbt をcloneして試してみます
なお、これ以降はこのcloneしたところでずっと作業してます
git clone git@github.com:pocorall/hello-scaloid-sbt.git
cd hello-scaloid-sbt
ちょっとだけ手を加えます
// build.sbt
// 適当なところでターゲット対象を追加しておく
platformTarget in Android := "android-18"
// libraryDependencies が参照しているscaloidのバージョンがちょっと古いので現行に
libraryDependencies += "org.scaloid" %% "scaloid" % "3.2.1-8"
// project/plugin.sbt
// android-sdk-plugin を 1.2.xのlatestに
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "1.2.10")
// sbt-ideaも現行に
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
buildしてみましょう
sbt android:package
でapkが生成されるはず
もし既に開発端末やEmulatorが立ち上がっているのなら
sbt android:run
とかで動いたりするはず
それっぽくする
hello scaloidのサンプルはいかにもAndroidプロジェクトですよ!!
って配置なので変えてみる
いつものsbtプロジェクトっつーかmaven(まじめに使ったこと無いから知らんけど)風というか…に
before
.
├── AndroidManifest.xml
├── README.markdown
├── build.sbt
├── project
│ ├── build.properties
│ └── plugins.sbt
├── project.properties
├── res
│ └── values
│ └── strings.xml
└── src
└── scaloid
└── example
└── HelloScaloid.scala
after
.
├── README.markdown
├── build.sbt
├── project
│ ├── build.properties
│ └── plugins.sbt
├── project.properties
└── src
└── main
├── AndroidManifest.xml
├── res
│ └── values
│ └── strings.xml
└── scala
└── scaloid
└── example
└── HelloScaloid.scala
src下にmainって掘って、resやらManifestやらを放り込む
もともとあったコードとかはmain下にscalaディレクトリ掘ってその中に
gen/bin/targetはとりあえずまた作られるのでサクッと消した
この状態で改めてapkを生成してみる
sbt android:package
先ほどと違ってgen bin が target/android-gen target/android-bin として生成されるので注意
この状態をtemplate的にg8にでもしておくと便利かも?
Android Studio で プロジェクトを開いてみる
まず Android Studio を立ち上げて scala pluginを入れる
Configure > Plugins > Install JetBrain plugin ... から scalaを探して入れるだけ
そして先ほどの hello-scaloid を取り込む!前に…
sbt gen-idea
そして Open Projectから hello-scaloid-sbt ディレクトリを選ぶと…
やった!立ち上がったね!!となります
が、このままではちょっと足りません。
チョビっと README.markdown の中身を見ると…
Two more steps are needed for IDEA:
* Project Structure -> Project -> in Project SDK section, select proper Android SDK
* Porject Structure -> Modules -> add Android facet to your project module
We do not recommend to use IDEA's own Android build system, because proguard settings are complicated and not fast.
Use commands from [android-sdk-plugin for sbt](https://github.com/pfn/android-sdk-plugin).
It runs simple and fast.
とあります。
とりあえず言われたとおりに修正しましょう
Modulesのfacet で、初期で設定されている場所に関しては、直したほうがよいかも
そして We do not recommend to use IDEA's own Android build system とあるので、Generated sources は切っておいたほうが良いかも?
Project Structure -> Modules で android-gen を sourceディレクトリとして認識させたりします
ついでに Project Structure -> SDKs にて android sdk のソースも認識させておくと良いかも?
ここまでやっておけば、HelloScaloidのコードはIDEAで快適に弄れる!
はず…
やばい、Android触る元気出てきたかも
参考