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」で何をやっているのかソースを見てみることにした。場所としてはここ。
問題の場所はこの11行目だとわかった。
cordova 5.0.xがインストールされていると「Browser.installCordovaCrosswalk(appDirectory);」を実行するようになっていて、せっかく指定したバージョンを無視している!これではダメに決まってる。
そこで、11行目をコメントしてその下の処理に流してやるようにした。ついでにインストールしようとしているバージョンを表示するようにした。
これで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行目だとわかった。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Browser.installCrosswalk = function installCrosswalk(appDirectory, version, saveToPackageJson, isLiteVersion) { | |
var info = IonicInfo.gatherInfo(); | |
var semver = require('semver'); | |
if (!info.cordova) { | |
var cordovaMessage = 'You must have the Cordova CLI installed (npm install -g cordova)'.red.bold; | |
events.emit('log', cordovaMessage); | |
return Q(cordovaMessage); | |
} else if (semver.satisfies(info.cordova, '5.0.x')) { | |
return Browser.installCordovaCrosswalk(appDirectory); | |
} | |
events.emit('log', ['You are running Cordova CLI', info.cordova, '- installing Cordova Android and Crosswalk manually'.yellow.bold].join(' ')); | |
return Browser.downloadFiles(appDirectory, version, isLiteVersion) | |
・・・・ |
cordova 5.0.xがインストールされていると「Browser.installCordovaCrosswalk(appDirectory);」を実行するようになっていて、せっかく指定したバージョンを無視している!これではダメに決まってる。
そこで、11行目をコメントしてその下の処理に流してやるようにした。ついでにインストールしようとしているバージョンを表示するようにした。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Browser.installCrosswalk = function installCrosswalk(appDirectory, version, saveToPackageJson, isLiteVersion) { | |
var crosswalkType = 'crosswalk'; | |
if (isLiteVersion) { | |
crosswalkType = 'crosswalk-lite'; | |
} | |
console.log('---------------------- installing ' + crosswalkType + ' version:' + version); | |
var info = IonicInfo.gatherInfo(); | |
var semver = require('semver'); | |
if (!info.cordova) { | |
var cordovaMessage = 'You must have the Cordova CLI installed (npm install -g cordova)'.red.bold; | |
events.emit('log', cordovaMessage); | |
return Q(cordovaMessage); | |
} else if (semver.satisfies(info.cordova, '5.0.x')) { | |
//return Browser.installCordovaCrosswalk(appDirectory); | |
} | |
events.emit('log', ['You are running Cordova CLI', info.cordova, '- installing Cordova Android and Crosswalk manually'.yellow.bold].join(' ')); | |
return Browser.downloadFiles(appDirectory, version, isLiteVersion) | |
・・・・ |
これでcrosswalkの任意のバージョンをインストールできるようになった。
コメント
コメントを投稿