non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

久しぶりにCordovaを動かしてみたら動かなかった

おはようございます。7月は奥さんが海外出張で実家に来てから、長男、次男が夏風邪で、月末まで実家生活で、地元の盆踊りに子供達を2回も連れて行けたりしたkjunichiです。

背景

AndroidiOSに対応する(つもりの)mrubyを組み込んだcordovaのプラグインを昨年作った。

その後、すっかり触らず、 思い出して、cordovaを動かしてみたら、動かなくなっている!

Androidのarmなエミュレーターが起動しない

昨年作成したプラグインx86のバイナリが含まれておらず、armで動かす必要があった。しかし、 どうもcordovaからは、x86エミュレーターは呼び出せるが、armなエミュレーターは呼び出せない。

対策

Android Studio経由、もしくは単独AVDマネージャーで予めarmなエミュレーターを事前に動かしておく。

iOSエミュレーターが動かない

TypeError: Cannot read property 'replace' of undefined 

このエラーで動かない。

対策

cd platforms/ios/cordova/node_modules/
sudo npm install ios-sim@latest

今回、ふと思いついて、始めるにあたり、新規のcordovaのプロジェクトを作成しての作業かつ、cordovaも更新したつもりだが、 上記のようにios向けのnode.jsモジュールディレクトリで、ios-simモジュールを最新版に更新することで、エラーが解消した。

まとめ

Android, iOSともエミュレーターで取らぶったが、なんとなく、昨年、プラグイン作っているある程度動かせるようになってからは、 Android,iOSともに、ひたすら実機でトライアンドエラーしていたような気がしてきた。

今回みたいに動かないこともあるものの、cordovaはハイブリッドアプリ開発の中ではメジャーなので、エラーメッセージを頼りに検索すれば、 Stackoverflow等で情報が見つかることが多そうな感じ。

次回の課題

libmruby.aをどうやって作っていたか?

iOS向けはFatバイナリーみたいなことをやった記憶がうっすらある。Androidx86_64向けも作ってその時のメモをQiitaに投稿はした。

あと、そもそもCordovaのプラグイン自体の開発ってローカルでどうやってたんだ?

cordova plugin add --link ~/path/to/plugin

と見つけたが、記憶がない。

関連記事