LoginSignup
106

More than 5 years have passed since last update.

Scala と Android Studio の組み合わせを触ってみた

Last updated at Posted at 2014-03-08

世の中は進んでいた。

「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を探して入れるだけ

pluginの追加

そして先ほどの hello-scaloid を取り込む!前に…

sbt gen-idea

そして Open Projectから hello-scaloid-sbt ディレクトリを選ぶと…

Open

やった!立ち上がったね!!となります

が、このままではちょっと足りません。

チョビっと 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.

とあります。

とりあえず言われたとおりに修正しましょう

Project

facet

Modulesのfacet で、初期で設定されている場所に関しては、直したほうがよいかも

Modules

そして We do not recommend to use IDEA's own Android build system とあるので、Generated sources は切っておいたほうが良いかも?

Generated sources

Project Structure -> Modules で android-gen を sourceディレクトリとして認識させたりします

add sources

ついでに Project Structure -> SDKs にて android sdk のソースも認識させておくと良いかも?

Android SDK

ここまでやっておけば、HelloScaloidのコードはIDEAで快適に弄れる!

はず…

やばい、Android触る元気出てきたかも

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
106