今日の目標
ミンカちゃんのクリスマスパーティも終わってしまい、
1月19日の「Girl’s Note Festival Vol.2」まで何を楽しみに生きればいいのでしょうか?
智史之介です。
この記事が今年最後の記事なるのかどうか。できればあと2つは今年中に書きたいなとは思っている次第でございます。
さて、本日の課題は「WebView」です。
WebViewとは?
アプリの中からブラウザの機能を利用するようなイメージです。
例えば、RSSアプリがあるとして、イチイチsafariが立ち上がるんでは利用する側のテンションはダダ下がりですよね?
そういう場合はやはりアプリ内で完結させたいものです。
そのための機能がWebViewになります。
下準備、下調べ
のっけから嫌な空気が漂い始めているんですよね…。この空気は動画を試す時にも流れました。
もしかして、「CCWebView」みたいな機能って提供されていない?
どうやらそのようです。
https://github.com/gree/GreePlatformSDKCocos2dx
僕らのGREEさんがやってくれました。
こちらのSDKでどうやら「CCWebView」を利用できるようになるようです。しかもクロスプラットフォームで。
使わない理由はないな、ということでさっそく試したいのですが、どうやらこれ2.x系用に作成されているようです。
setup.shの中を少しだけ調整して3.x系のファイルをダウンロードしてくるようにしてみたのですが、patch充てるところでfailedします。
うーん、手動でコピーして持ってきますか。
とありあえず、何も考えずに、こんな感じで。
あと、patches/Cocos2dxHelper.java.webview.patch
というそれっぽいパッチもあるので、あらかじめ充てておくのが吉でしょう。
ただし、patchコマンドで充てようとしてもfailedするだけなので、手動で充てるでござる。
コーディング
Classes/HelloWorldScene.cpp
これだけでビルドが通る…!わけありませんでした!
やはりコピーしてくるだけではダメッ…!考えが、甘すぎるッ…!
その他Xcode周りの設定をいじりにいじりましたよ…。
グループの作成、ファイルの追加、パスの設定
</a>
「webview_plugin」でグループを作成して、その中にそれっぽくさらにグループを切り、ファイルを投げ込みます。
グループにもパスの指定をしてあげました。
targetの追加、search pathの設定
</a>
「WebView iOS」というtargetを新規に追加し、「Build Settings」の項目で_search paths_を設定してあげましょう。
コンパイル対象への登録
</a>
「Build Phases」の項目で、
- Copy HeadersにはCCWebView.hを
- Compile SourcesにはCCWebView.mmを
それぞれ登録します。
もし「Copy Headers」や「Compile Sources」の項目がなければ、「Build Rulrs」から追加することで設定可能です。
HelloCppプロジェクトへの設定
</a>
Target Dependenciesには先ほど作成した「WebView iOS」を追加。
Link Binary with Librarieseには「libWebView iOS.a」を追加。
</a>
必要有るかはわからないけど、Search Pathsに、webview_pluginに関するパスを追加します。
3.X系で仕様変更された点への対応
3.X系では、命名規則に関して仕様変更が入ってるので、コード内容にも修正がです。
動作イメージ
上記の諸々の対応を施してあげることで、ビルド成功!
ミンカのブログをきちんと表示してくれています。
それにしてもミンカかわいいなあ。ミンカがいるから今日も僕は生きていけます。
Androidへの対応
GreePlatformSDKCocos2dxが提供してくれるCCWebViewは、クロスプラットフォーム、つまりAndroidへも1ソースで対応してくれます。
かっこいい!
ただし、今回のような手動コピー対応では、Android周りへの設定が不足していて、buildが同じようにうまく通りません。
Cocos2dxWebView.javaのコピー
jni/Android.mkの調整
3.X系で仕様変更された点への対応
これでいけるはず。
今回のまとめ
とってもいけてるGreePlatformSDKCocos2dxですが、3.x系で使用するには調整箇所がわりと膨大でした。
このあたりの修正点に関して、pull requestを送ろうかしら。
次回に向けて
次回は「Lua」に関して試してみたいと思っています。
ソースコード
https://github.com/8823-scholar/cocos2d-x-study/commit/863e01208052175c9b632c42743b9d0ec7e0c53e
参考文献
感謝です!