fc2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ

■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
「Unity5」×「gree/unity-webview」×「iOS」×「Codesign Failed」
Unityで開発しているiOS/Android向けアプリにWebViewを実装しようと
greeさん公開のプラグインを使用しました。
いちばんハマった所は

UnityからのBuildおよびXcodeのArchiveまでは正しく動作するのに
AdHoc書き出しを試みると“Codesign Failed”が出て失敗すること


です。

まず「Codesign Failed」と言う事で証明書関連のエラーだと思い込み
キーチェーンアクセスやApple Member Center、Xcodeの設定ばかり見ていました。
しかし、OSXやXcodeを最新にアップデートしても一向に解決せず
試しに以前ArchiveしたものをAdHoc書き出しすると無事成功するという結果に。

この時点で、証明書そのものが直接の原因ではなく
Unity側かXcode側に実装・設定した項目を疑うことにしました。
ここで見つけた記事にヒントが隠されていました。
http://qiita.com/altemina/items/6823331aa5c9a3044e92

Assets/Plugins/****.bundleのプロビジョニングを参照しにいっているとのこと。
なるほど、これなら“Codesign Failed”が出るのも納得できます。
今回、WebView.bundleというファイルが該当していたので、こいつが原因のようです。

記事の通り、Select platforms for pluginをEditorに設定し直して
再度Buildしたところ、解決せず……(※)

ここでもうひとつ思い出しました。
WebView.bundleは、64bit対応させるために私が再書き出しした物だったのです。
http://qiita.com/kwst/items/193bf1aa737cb3810ad9

ということは、証明書やプロビジョニングは同じCreatewave製の
はずなのですが……ますます分からなくなってきました。

最後に気付いた事実によってようやく解決しました。
このWebView.bundleが、何故Assets/Plugins/直下にあるのだろうという事です。
iOS用のPluginならiOSフォルダ内に含めるはずなので
疑問に思って調べた所、どうやらMacOS用のPluginであることが判明しました。
ということは、今回iOS/Android向けのため、不要なファイルだったと言う事です!

http://qiita.com/kwst/items/193bf1aa737cb3810ad9
を参考に作業していて、Unity上でのWebViewの動作は
諦めていた私にとっては不要だったのです。

<解決方法>
Unity上からWebView.bundleを削除します。
するとWebViewObject.csがエラーを吐いてしまうので
プリプロセッサでUNITY_EDITORを完全無視するように書き換えます。

before:
#if UNITY_EDITOR || UNITY_STANDALONE_OSX

after:
#if UNITY_EDITOR
#elif UNITY_EDITOR || UNITY_STANDALONE_OSX

あとXcodeのCopy Bundle Resourcesから
WebView.bundleを含めないよう設定する
事を忘れないように。
これでめでたくAdHoc書き出しが成功するようになりました。


(※)
これは、XcodeのCopy Bundle Resourcesに
WebView.bundleの設定が残っていたためだと思われます。
UnityのBuildは、Xcode側の設定を新たに追加することは自動で行いますが
今回のような.bundleの削除は対象外なのだと思われます。

カテゴリー:Unity | TM(0) | CM(2)
次のページ