try! Swiftメモ: Day1-2: Swift on Android
1日目2つ目のセッションは、SwiftをAndroidで動かす、という内容でした。
実現にはAndroidNDKが必要ということでしたが、なかなか闇が深そうな内容でしたね。
とはいえ、それを実現しているEric Wingさんは、やはり色々な経験をされていてすごいなーと感じました。
概要
- Cによって全てが可能となる
- C ABIは安定して動いている
- Swift C Library
- Swift Android
Android NDKは最低限
- Swift & NDK
NDKはいけてない
Bionic // 後で調べる
C++ではライブラリを書かない
様々なNDKバージョンが混在する..
- 全ての標準ライブライのバージンを網羅する必要がある..
- NDKはほぼライブラリを提供していない
- 自分で作る必要がある..
- libICU
- JAVAでスタートして、Swiftに入っていく
- まず、JAVAでかく
- Activity
- onStart
- MyMainEntry(this);
- MyMainEntry(Activity activity);
- Cのコードを呼ぶ
- C
- @_cdecl(“MyMain”)
- public func MyMain() { … }
// 気をつけること諸々
- いろいろ辛さがあるので、なんのためにするのかがはっきりしない限り使うのは推奨しない
- グローバル変数、static変数には十分気を使う必要がある
- バックグラウンドから再度起動した時
- global変数のメモリが残っていたり、残っていなかったりする..
- スタート地点で初期化する
ビルドシステムは最悪
- Swift package manager -> あまり使えなそう
- 自分でやる -> 痛みみあり、拡張性が難しい -> 困難
- CMake -> 最近、CMakeをAndroidStudioでサポートするように発表があった
- SwiftはCMakeがわからないという問題
JNIをとおすのがたいへん
- サブクラスができない
便利ツール
- Cross platform C Library
- FlappyBlurr
- Nuklear
IUPについて
- Foucation + IUP
- 設計が多い
- PCはもうやっている
Blurrrを使うと、比較的簡単にできる * Blurrr SDK http://blurrrsdk.com/