2012-04-27 13 views
1

申し訳ありませんが、私の英語はあまりよくありません。 私はcordova 1.6.1を使用しています。 私は新しいコードバスベースのプロジェクトを作成し、プラグインを追加するように拡張しました。作成したプラグインで静的ライブラリを作成し、このライブラリを含むprojetを実行しようとしました(ライブラリはxcodeのビルド設定にあります)Cordova 1.6.1 - プラグインが見つからないか、CDVPluginではありません

[INFO] ClientChannel(1)初期化... CDVPluginクラスMNClientChannelPlugin(pluginName:MNClientChannelPlugin)が存在しない、ソースなしでプラグインフォルダに

次のエラーが、私は自分のアプリケーションを実行するときに発生します。 ERROR: 'MNClientChannelPlugin'プラグインが見つからないか、CDVPluginではありません。 Cordova.plistのプラグインマッピングを確認してください。

これらのエラーに関するコメント: 1)最初の行は、私が書いたJavaScriptコードのログです。これは、「初期化」機能が起動したことを示します。この関数は、MNClientChannelPluginというプラグインのinit関数を呼び出します。 2)& 3)これらのログはCodova.plistでgetCommandInstance(2)及びCDVViewController.mmの(3)実行する関数から呼び出され、ネイティブのiOSコルドバのSDK()

から来る、私はとしてMNClientChannelPluginを置きますキーと値として。この設定では、MNClientChannelPluginソース(。&.h)をPluginsフォルダに入れたときに動作しますが、MNClientChannelPlugin.mmでスタティックライブラリを作成したときは動作しません。 (私はこのライブラリを私のプロジェクトに含め、プラグインフォルダに.hヘッダを置いた。) コルドバは、 を作成することが可能と思われるので、コルドバのプラグインは、.mファイルと.hファイルでCordova.Frameworkではなく Pluginsフォルダにある

...ライブラリ内のソースを見つけることができませんように見えますプラグインをインストールしてライブラリにパッケージ化し、コードバスベースの プロジェクトで使用しますが、私はそれが私のためには機能しません。 アーカイブとコミットを確認しましたが、解決方法は見つかりませんでした。 誰が問題になるかも知っていますか?

+0

私は同じ問題を誰かが持っていますか? –

答えて

1

私はこれに対する解決策を見つけました。

ここで問題です:

  • あなたMNClientChannelPluginは静的ライブラリ内に保持されて
  • あなたの主なプロジェクトは、静的ライブラリ
  • を参照リンカが実際で使用されるクラスでのみリンクしてくれているが、主なプロジェクト
  • リンカが知っている限り、どこでも参照されていないため、MNClientChannelPluginはプロジェクトで使用されません。
  • あなたのphonegapアプリケーションがMNClientChannelPluginインスタンスを要求した場合にのみクラスがロードされるため、どこからでも参照されません。
  • Ergoクラスが最終バイナリにリンクされていないため、上記のエラーが発生します。

解決策は、リンカにMNClientChannelPluginオブジェクトを含めることです。

メインプロジェクトの「その他のリンカフラグ」に-all_loadを追加するのは簡単です。これにより、プロジェクト内のすべての静的ライブラリのすべてのクラスをリンクするというノックオン効果が得られます。しかし、それは動作します。

静的ライブラリの名前に-force_loadを使用する方が良いでしょう。

xcode-project-target-settings-syntax-for-linker-flag-force-load-on-iphone

0

あなたは(私はあなたがいたと仮定)Pushwooshを使用していた場合は、指示は明確にこれをコピーして貼り付ける必要があると述べている:私はそれを自分で試したことがないのにここで、この上の助けを借りてポストですコード:

<key>PushNotification</key> 
<string>PushNotification</string> 

にプラグインCordova.plist」で。あなたが上記のエラーを抱えていた場合は、それをコピーしてプラグインに貼り付けなかったことを意味します。キーと文字列の値を正しい場所に移動すると、エラーが消滅します。

ハッピーハッキング!

関連する問題