てすと

たかろぐ

自分のログを刻みます。

NimライブラリをReact Nativeから使いたい(全体像の確認)

React Nativeから呼び出したくて、奮闘してるけど...行けそうで行けないっ。

何が足りないんだっ!?

nimをCにコンパイルしたら、もうnimの問題ではなく「CライブラリをiOSに持って行く」帰着されて、 すると他の記事を参考にしてやればできるはずなんだけど、何故できないか自分が一番分かっていません笑

全体像を振り返る

言葉で説明できる気がしないので、図で描きますね。

f:id:g-knk-9410:20180329234937p:plain

はい。多分こういうことだと思うんですけど、どうでしょう...()

今自分がやっていたのは、右側の静的ライブラリにまとめるところです。 (アーキテクチャ毎のクロスコンパイルが上手く行かなくてツラミを見てます)

それで、静的ライブラリをインポートした後の話になりますが、それだけですぐにライブラリが使えるようになるかといったら、そうでもないみたいです。

React Nativeサイドの話

先ほどあげた図の左側の話です。

React Nativeは、直接ネイティブコードを呼び出せる訳ではないようで、 それがしたい時は必ずNativeModulesを介して呼び出さなければいけません。

[注意]React Nativeの開発にExpoを利用している場合は、 NativeModulesが使えない制約が掛かっている状態なので、こちらの記事を参考に、 eject(プロジェクトをExpoの管理下から外す作業)を行う必要があります。

NativeModulesが使える状態になったら、以下の記事のようにやれば、React NativeからObjective-C/Swiftのコードが呼べるようになります。 (動作確認しました。)

qiita.com

更に、Objective-C/Swiftから追加クロスコンパイルした静的ライブラリを読み込んで返せばいけるかなーって感じです。

最後に

やるべき全体像を確認しました。

なんか、自ら薔薇の道に進んでる感がしますが、勉強になるはずなのでもう少し頑張ってみたいと思います。

(でも、この辺ができないと通信関係に入れない...。)