きももまなきんのダンス

ぼちぼちと、技術的なあれこれを。

try! Swiftメモ: Day1-2: Swift on Android

1日目2つ目のセッションは、SwiftをAndroidで動かす、という内容でした。

実現にはAndroidNDKが必要ということでしたが、なかなか闇が深そうな内容でしたね。

とはいえ、それを実現しているEric Wingさんは、やはり色々な経験をされていてすごいなーと感じました。


概要

  • Cによって全てが可能となる
    • C ABIは安定して動いている
    • Swift C Library
  • Swift Android
    • 言語とライブラリを区別することが大事
      • iOSならIUKit
      • これをAndroidに移植することはないだろう
    • swiftCoreが大事
      • Int, String…
      • それ以外はOption
  • swiftCore -> Swift C Library -> Android SDK, OpenSL

  • Android NDKは最低限

  • Swift & NDK
    • NDKはC++向けだった
    • Swift -> C++ -> 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変数のメモリが残っていたり、残っていなかったりする..
    • スタート地点で初期化する
  • ビルドシステムは最悪

      1. Swift package manager -> あまり使えなそう
      1. 自分でやる -> 痛みみあり、拡張性が難しい -> 困難
      1. CMake -> 最近、CMakeをAndroidStudioでサポートするように発表があった
    • SwiftはCMakeがわからないという問題
  • JNIをとおすのがたいへん

    • サブクラスができない
  • 便利ツール

    • Cross platform C Library
    • FlappyBlurr
    • Nuklear
  • IUPについて

    • Foucation + IUP
    • 設計が多い
    • PCはもうやっている

Blurrrを使うと、比較的簡単にできる * Blurrr SDK http://blurrrsdk.com/


スポンサードリンク