LoginSignup
3
2

More than 5 years have passed since last update.

Unity2018.2でAndroid(NDK)対応したメモ

Last updated at Posted at 2018-12-01

環境設定

  • SDKは24=7.0(Minimam API Levelは21=Android5.0)
  • NDKは13b(AndroidStudio経由ではなく直接アーカイブから拾う必要あり)
  • Javaはjdk1.8.0_131.jdk
    • 例によってJavaはサイト構成が腐ってて目的にページにたどり着くのが困難です。UnityのJDK設定のBrowsの自動検出でないよ=>ダイアログからリンク飛ばしてもらうのが一番確実。

Libraryが不可視フォルダーなので、GUIで設定したかったら、

https://helpx.adobe.com/jp/x-productkb/global/cpsid_91195.html

とか参考に、不可視属性を解除しておく必要あり。

なお、Mojaveだとこの方法が塞がれており、別の方法を取る必要がある。
一番てっ取り早いのはこれ。

https://appletoolbox.com/2018/02/how-to-show-your-user-library-in-macos-high-sierra-and-sierra/

Appleは何させたいんだよ、、本当にくそくそくそ!!!!

ビルド時間

  • Monoよりやや長くなる。2回目以降/MacMiniで3分程度

ネイティブプラグインについて

  • 2018.2以降はC++を直接投げ込んで良い。
  • サンプルが公式から配布されてるので、それをみつつ、やれば迷うことはない。
  • 個人的にDLLをリポジトリに増やしたくないので、プロジェクト上は生のC/C++を入れておいて、NDKでビルドさせる
    • デバッグは、別フォルダで該当ソースをもってきて、テスト実行することにしよう。
    • あと、NDKのバージョン違いとかで、実行時にエラー(エラーメッセージが的外れでこれが原因と気付きにくい)も起きるの嫌だから...
      • サンプルでもってくるpackageのdllも、この理由で環境によっては実行時エラーになるため、リビルド必須
    • この方法だと、IL2CPPで勝手にビルド対象に入るが、外部依存のライブラリとかが絡むとめんどくさい
  • Permissionについては、バッチ組んだ方がよいが
  • 文字列バッファの話とか

IL2CPP と Reflection のハマりどころ

  • Strip対策で、Preserved属性をつける
  • 上記をつけても例外でMethod Not Found が Reflection で返ってくることがあるが、メソッド内で別のエラーが起きたときに、リフレクション側で、誤って(?)その例外が出てしまうという現象っぽい。なので、これ以外に出てるエラーがないか、合わせてチェックする必\ 要がありそう。

NativePluginにC#からコールバックを渡す時の罠

特定の端末でのみ、共有ライブラリにしたDLLが読めない問題

  • よくいわれてる、ネーミングルールや、配置規則に従っても、DllNotFoundExceptionを吐く端末が存在する。(Xepriaの某機種とか)
    • C++を直接配置して、IL2CPPで吐き出すコードに直接マージさせて、__internal属性で呼び出すしかなさそう。

対象端末

  • snapdragon435で動くようにチューニング(だいたい30fps維持、最低ラインで奨励とはしない)
    • snapdragon660/710も検討(奨励ラインの端末)
3
2
0

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
3
2