RPGツクールMVでiPhoenアプリビルド最新のcordovaでWKWebViewを使うセッティング

最新のcordovaでビルドするためのセッティングは以下のようになります。

cordova create myApp my.project.id myApp
cd myApp
cordova platform add https://github.com/apache/cordova-ios.git#master
cordova plugin add https://github.com/apache/cordova-plugins.git#master:wkwebview-engine-localhost

そして出来上がったconfig.xmlのcontent部分を以下のように変更してください。

<content src="http://localhost:8080"; />

これだけでDeployment Targetを8.0に修正する必要も、Enable Bitcodeの項目をNOにする必要も無くなります。

あとはステータスバーを消したければ、Resourcesの中のinfo.plistに「View controller-based status bar appearance」を追加してNOに、「Status bar is initially hidden」を追加してYESに変更するというのは同じです。

WKWebViewでの環境構築がついに発表される

先日書いたRPGツクールMVをWKWebViewで動かすための環境構築手順が以下でも詳しく書かれています。

参考: [RPGツクールMV] iOSアプリ化のためのWKWebView構築手順

実は、まともに動作するRPGツクールMVのiPhoneアプリが作れなかった時、バックグラウンドからの復活でアプリが異常に重くなる現象を修正されたということで、どうやったのか知りたくて何度も訪れたサイト様です。

この構築手順が一週間前に発表されていたらあの地獄の情報収集期間がなかったはずなので、個人的には助かったのになあ、と思う反面、自分で答えを導き出せたので、その分、成長したと考えて今後に活かしていきたいと思います。

ちなみに、[Error Your browser does not allow to read local files.] というエラーは

cordova plugin add https://github.com/apache/cordova-plugins.git#master:wkwebview-engine-localhost

というコマンドで回避でき、iOSの環境も最新のもので通ります。

しかし、このプラグイン(apache製)ではlocalhostファイルがゲームを立ち上げるたび、毎回作られてしまい、古いlocalhostファイルを読みにいけなくなってしまうため、コンティニューができなくなってしまいます。そのため、localhostファイルが固定されて作られるtelerikのWKWebViewで動かす以外方法がないということで、図らずも同じ環境をセットアップしていたようです。

もしapache側のプラグインでもlocalhostが固定できるようなら、最新の環境で動かせるので、安定感がありそうですが、知識と技術がなさすぎてそろそろ力つきそうなので、今の状況でなんとかリリースまで持っていきたいと思っています。

※追記 ということで調べた結果、config.xmlのcontentを以下のようにすることでlocalhostを固定することに成功しました。結果的に実に簡単な話でしたが、これで最新のwkwebviewで動かすことが可能になりました。iOSを8にする必要もありません。

<content src="http://localhost:1234" />

太字の「1234」部分は0以外で、四桁の適当な数字でOKっぽいです(四桁じゃなくてもいいかもしれませんが調べてないのでとりあえず)。最初8080としてましたが、あまり関係ないみたいです。

RPGツクールMVで作ったゲームをiPhoneアプリ化するときの問題と解決方法

最近、RPGツクールMVでゲームを開発しています。Webで動かすならツクールインストールから5分もあればできるんですが、iPhoneアプリ化は現状致命的なバグが起こりまくります。ここ数日間、世界中のフォーラムで情報収集して、やっと動かせるようになったので、忘れないうちにメモしておきます。プラグインが新しく作り直されるまで(いつになるか見当もつきませんが)この環境をキープしておないと、まともに動かせないです。

まずビルド環境などはRPGツクールのヘルプに載っているのでそれを読めばすでにiPhoneアプリを作った事がある人は簡単に構築できます。ただ、MVはNode.jsのブラウザアプリなので、ターミナルを使ってビルドを行う関係上、少し慣れが必要かもしれません。しかし一度流れを覚えると簡単にビルドできるようになります。

一度、ビルドまで行い、流れをつかんだらそのシーンは捨ててください。そのシーンはヘルプ通りに作ったとしたら、UIWebViewで動いています。UIWebViewは一度バックグラウンドに行って戻ってくると異様な重さになります。また、イヤホンをゲームの途中で刺すとビープ音のようなノイズがずっと流れます。あとは、音楽アプリの音が必ずオフにされてしまいます。スマホ用バーチャルコンソールプラグインのUIも笑えるくらい拡大されます。

こういったバグやエラーを回避するために、WKWebViewを使います。最近GoogleもiOS用のchromeに取り入れたことで話題になりました。

ということで、余計なエラーがおきないようにまったく新しいシーンを作ります。

cordovaでのセットアップは以下。

cordova create myApp my.project.id myApp
cd myApp
cordova platform add ios@3.9.2
cordova plugin add https://github.com/Telerik-Verified-Plugins/WKWebView
cordova prepare
cordova build

cordovaのバージョンが最新ではありませんが、あえてこのバージョンを使います。というか、この構成以外まともに動きません。

Apacheから提供されているWKWebViewもありますが、local storageがまともに機能しません。動いてはいるんですが、シミュレーターで確認したところ、local hostファイルがアプリを起動するごとに生成されるため、セーブデータが読み込めなくなり、コンテニューできなくなっているようです。TelerikのWKWebViewプラグインであれば、local hostファイルは12344という番号で固定されているので、セーブデータがうまく動きます。セーブデータをサーバーにアップすることも考えましたが、さすがに技術的な知識が少なすぎるので今回は見送りました。

次にxcodeの設定です。

まず、プロジェクトのInfoからDeployment Targetを修正、8.0に変更します。ここまでで、xcodeのシミュレーターなら動きます。

次にBuild SettingsからEnable Bitcodeの項目を検索、NOに変更します。これをやらないとiPhoneに転送する際、「does not contain bitcode」といったエラーが出ます。

アプリ化のための設定は以上です。TelerikのWKWebViewプラグインが更新されるまではcordovaのバージョンは上げられないです。

あとはステータスバーを消したければ、Resourcesの中のinfo.plistに「View controller-based status bar appearance」を追加してNOに、「Status bar is initially hidden」を追加してYESに変更すれば良いです。

もしかしたら、「WKWebViewPluginEmbeddedServerPort」の番号を書き換えたらlocal hostファイルのファイル名変更も可能かもしれません。やってないのでまだわかりませんが。

全部わかってしまえば大したことないんですが、さすがに疲弊しました。

テキストを書き換えるだけでプログラムできる技術が欲しいと、IBを使わないアプリ作りを目指していましたが、iOSの度重なるUIKit周りの修正(ほぼ総取替え)についていけず、DoorQuestもUnityかWebアプリで作り直そうと考えていた矢先、RPGツクールMVがNode.jsを使ってWebで動かせるエンジンとして発売されるということだったので、色々勉強できそうだと作り始めてみたら、iPhoneアプリ化は同じくらいの魔窟だったという感じです。

2013-02  | 2013-05  | 2013-07  | 2016-02