2015年6月12日金曜日

ionicでインストールするcrosswalkを選択できない件

追記15.07.11:最新版のionic(1.6.1)では「ionic browser add crosswalk@バージョン」で指定通りインストールできるようになった。この記事も合わせて読むとionicの更新に依存することなくcrosswalkの最新版をインストールできるようになる。

琴線探査: ionicで最新版のcrosswalkをインストールする方法

----

最近ionicのCLIが1.5.0にバージョンアップしたのだが、その後platform/androidを削除してcrosswalkを再インストールしたら、localStorageに保存したはずの値がアプリの再起動時に保存前の状態に戻っているという動作になってしまった。

ChromeのDevToolsでは、crosswalkのバージョンは42.0.2311.135となっている。以前のバージョンが何だったのかは覚えていないが、このバグが出る前は確か41系だったような気がする。

「ionic browser ls」でインストールできるcrosswalkを見ると、crosswalk-liteが増えていたりするので多分アップデートされたと思う。

幸いなことに、ionicはcrosswalkのインストール時にバージョンを指定できるので、stableで一番古いものをインストールして実行し、再びDevToolsでバージョンを確認すると…全く変わっていない!

何かおかしい。ネットで調べると、どうやらcrosswalk-liteもインストールできないという話。

cordova - How to build android with Crosswalk lite using ionic-cli? - Stack Overflow

このページを参考に、「ionic browser add」で何をやっているのかソースを見てみることにした。場所としてはここ。

/usr/local/lib/node_modules/ionic/node_modules/ionic-app-lib/lib/browser.js

問題の場所はこの11行目だとわかった。



cordova 5.0.xがインストールされていると「Browser.installCordovaCrosswalk(appDirectory);」を実行するようになっていて、せっかく指定したバージョンを無視している!これではダメに決まってる。

そこで、11行目をコメントしてその下の処理に流してやるようにした。ついでにインストールしようとしているバージョンを表示するようにした。



これでcrosswalkの任意のバージョンをインストールできるようになった。