"Kotlinでスマートフォン・クロスプラットフォーム開発の試行錯誤を記録するメモ"、勝手に略して、"ことクロ"シリーズ その7。
iOS向けのJVMクロスプラットフォーム環境のRoboVMが試してみた時点で不安定で、かつ、クローズドソースになるというがっかりなニュースも入ってきて、Kotlinでクロスプラットフォーム開発に取り組む意欲が下がっていたのだが、新たなiOS向けのJVMクロスプラットフォーム環境Multi-OS Engine(インテル謹製)のお試しを開始したことで、やる気復活!
今回は、AndroidStudioをkotlin向けに2015年11月時点での基本的な設定を行い、hello kotlinするまで。
ゴールはこんな感じ(kotlin入れて、gradle書き換えて...フォントをみやすくして、日本語化する):
[前提] Android Studioをインストール済(今回の実行環境はwindows 10)
[作業感想] 数ヶ月前のkotlin+AndroidStudio情報は概ねそのまま使える(ハマりどころなし)。
1) AndroidStudioをkotlin向けに設定
こちらに従うだけで、Kotlon1.0-beta向けの設定を問題なく行える。
http://dev.classmethod.jp/smartphone/android-kotlin-introduction-01/
ビルドは、"Ctrl+F9"で
ちょっとだけ、自分向けにわかりやすくしてみたClassでビルドした:
class MainActivity : AppCompatActivity() {
val msg="ことりんが、actionしてみますこと。"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById(R.id.toolbar) as Toolbar
setSupportActionBar(toolbar)
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener { view ->
Snackbar.make(view, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show()
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu) // Inflate the menu;
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.itemId
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
}
個人的な注目点は、クリックイベントのKotlin的な記述:
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener { view ->
Snackbar.make(view, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show()
}
- FloatingActionButton型へのダウンキャストの書き方が、Swiftっぽい。#注、近時、Swift互換言語でAndroidしてみている
- OnClickListenerの処理のアロー式でのクロージャ記法(view ->)と、メソッドチェーン記法Snackbar.make(...).show()の組み合わせがしっくりくる。
2) AndroidStudioを使いやすく。
フォントとフォントサイズの変更
AndroidStudioの設定で、ここが唯一ちょっと迷ったところ。こちらに従い、「Save As」を使って、設定開始。
日本語化
以下に従うのみ。ヒントも日本語化してくれる。
http://www.hiskip.com/pg-notes/ide/androidstudio/584.html
3)その他
genymotionのインストール
androidエミュレータを速く実行したい場合に導入。以下などを参考:
http://qiita.com/Sam/items/8d551f575b617fa0be7e
http://androidlover.net/genymotion
注、既にDockert等を使っていてVirtualBoxが入っている場合は、VirtualBoxなし版をインストールすること。
AndroidバージョンとAPIバージョンを見ながら、genymotion仮想マシンを導入するのが基本:
iOS開発向けに、Multi-OS Engineを導入(釣り)
genymotionのインストール&仮想マシン起動までは、それなりに時間がかかるので、さみしいひとは、こちらに煽られて、KotlinでiOS向け開発を行うためのクロスプラットフォーム環境を整えておこう。
4)genymotionでの実行
Android Studioにgenymotionプラグインを導入:
Android Studioの再起動後に、genymotionでの実行ができるようになる。
注意点は、genymotion環境のAPIバージョンと、build.gradleが管理するbuild.gradleのバージョンとの整合性を取る必要がある。
今回のもともとのAPIバージョンは23:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.ktl.mykotlin"
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
(以下、略)
先ほど入れたgenymotion仮想マシンのAPIのバージョンは22
この環境で実行したい場合、例えば、以下などを参考にbuild.gradleを書き換えていく。
http://qiita.com/tomoima525/items/870ac52ce3256e785c4c
今回はお試しなのでAPI23が動くGememotion環境のプレビュー版を入れてしまうこととした:
実行画面
ちゃんと、onClickListenerの処理が走っている。
次回以降
少しちゃんとしたandroidアプリをkotlinで書く。
そして、それにもとづいて、iOSアプリも書いてみる。