web-dev-qa-db-ja.com

iOSがプラグインを見つけることができない、Android細かい

Phonegap/Cordovaでアプリを構築しています。現在のところアプリはかなりシンプルですが、機能するにはネットワークステータスと位置情報プラグインが必要です。

私はこれまでにアプリを開発しました(現時点ではいくつかの基本的なHTMLページと少しのJSで構成されています)Android=)で問題なく動作しています。

今朝、私はすべてがiOSで問題ないことを確認することにしました。まったく驚くことではありませんが、そうではありません。

だから...それはプラグインに問題があるようです。 XCodeは以下を出力します:

CDVPlugin class CDVLocation (pluginName: Geolocation) does not exist.
2013-10-18 11:24:29.437 Eye Cab[589:907] ERROR: Plugin 'Geolocation' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-10-18 11:24:29.438 Eye Cab[589:907] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [
  "Geolocation1841912763",
  "Geolocation",
  "getLocation",
  [
    false,
    0
  ]
]

これは、Geolocationプラグインをロードできないことを意味していると思います。ネットワーク接続プラグインについても同様です。

以下は、Phonegapプロジェクトからの切り詰められたconfig.xmlです。

<feature name="http://api.phonegap.com/1.0/device" />
<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>
<feature name="NetworkStatus">
    <param name="ios-package" value="CDVConnection" />
</feature>

また、IDを機能名として使用してみました(例:org.Apache.cordova.geolocation)。同じ問題が発生します。実際にはまったく同じエラー。

Androidではすべてが完璧に機能します。シミュレータでは、Chrome=私のMacとデバイスで。

次のバージョンを使用しています。

  • Phonegap 3.1.0-0.15.0
  • XCode 5.0
  • OSX 10.8.5
  • iOS 6.1.3(iPod Touch)
  • iOS 7用iOSシミュレーター

正しいファイルはプロジェクトの/ www/plugins /フォルダーにあります。

  • org.Apache.cordova.geolocation
    • www
      • Coordinates.js
      • Position.js
      • PositionError.js
      • geolocation.js
  • org.Apache.cordova.network-information
    • www
      • Connection.js
      • network.js

これを手伝ってくれる人なら誰でも喜ぶハグ。他の質問を調べましたが、うまくいきませんでした。

22
Mike

iOSにはプラグインファイル自体(.mおよび.hファイル)がありませんでしたが、cordova prepareまたはphonegap prepareを呼び出してコピーする必要があります。あまりよく文書化されていないようです。

2
Mike

Markのソリューションは機能しますが、不要であり、XCodeプロジェクトのカスタマイズを失う原因になります。

私にとってそれを修正したのは:

XCodeで[ビルドフェーズ]に移動し、[コンパイルされたソース]ドロップダウンを開きます。 +をクリックして、プラグインディレクトリにあるはずのプラグイン.mファイルを追加します(ただし、コンパイルされたソースにはありません)。

60
shi11i

今後のサーチャーのために-私のために働いた解決策は別のスタックオーバーフロー応答から来ました、ここ: https://stackoverflow.com/a/19501579/1245276

つまり、1。/plugins/ios.jsonを削除し、2。次に./platforms/iosを削除し、3。cordova platform add iosを実行します。4。次にcordova buildを実行します。 ios.jsonを削除すると、プラグインを強制的に再コンパイルするのに役立ちます。少なくともそれは私が理解していることであり、私にとってはうまくいきました。

30
Mark Pruce

私の場合、プラグインディレクトリでもPlugin_name.mファイルを見つけることができなかったため、ビルド段階でPlugin_name.mファイルを手動で追加しました(Plugin_name.mファイルはplugin-> src-> iosフォルダにあります)。次に、プラグインの機能名をios.jsonファイル(cordova-buildsフォルダーにあります)からコピーし、config.xmlファイルに追加します(バックスラッシュを削除します)。プラグインは正常に動作します。

注:-plugin_name.mファイルに含まれているビルドフェーズですべてのファイルを追加する必要がある場合があります。

0
Anubhav Gupta