読者です 読者をやめる 読者になる 読者になる

What Can a Hippopotamus be?

ペーペーエンジニアが日々ぼちぼちと技術的なあれこれをアウトプットする場。

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/


スポンサードリンク