[英]Cordova iOS plugins not found
我最近從2.3.0升級到Cordova 2.9.0。 按照所有升級說明后,我能夠讓應用程序在模擬器中啟動。 但是,在Xcode中我看到以下錯誤:
ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["Device1776032119","Device","getDeviceInfo",[]]
ERROR: Plugin 'NetworkStatus' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["NetworkStatus1776032120","NetworkStatus","getConnectionInfo",[]]
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["INVALID","Logger","logLevel",["LOG","deviceready has not fired after 5 seconds."]]
ERROR: Plugin 'Logger' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["INVALID","Logger","logLevel",["LOG","Channel not fired: onCordovaConnectionReady"]]
ERROR: Plugin 'Logger' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["INVALID","Logger","logLevel",["LOG","Channel not fired: onCordovaInfoReady"]]
這是我的config.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<widget>
<feature name="Geolocation">
<param name="ios-package" value="CDVLocation" />
</feature>
<feature name="Device">
<param name="ios-package" value="CDVDevice" />
</feature>
<feature name="Accelerometer">
<param name="ios-package" value="CDVAccelerometer" />
</feature>
<feature name="Compass">
<param name="ios-package" value="CDVLocation" />
</feature>
<feature name="Media">
<param name="ios-package" value="CDVSound" />
</feature>
<feature name="Camera">
<param name="ios-package" value="CDVCamera" />
</feature>
<feature name="Contacts">
<param name="ios-package" value="CDVContacts" />
</feature>
<feature name="File">
<param name="ios-package" value="CDVFile" />
</feature>
<feature name="NetworkStatus">
<param name="ios-package" value="CDVConnection" />
</feature>
<feature name="Notification">
<param name="ios-package" value="CDVNotification" />
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer" />
</feature>
<feature name="Capture">
<param name="ios-package" value="CDVCapture" />
</feature>
<feature name="Battery">
<param name="ios-package" value="CDVBattery" />
</feature>
<feature name="SplashScreen">
<param name="ios-package" value="CDVSplashScreen" />
</feature>
<feature name="Echo">
<param name="ios-package" value="CDVEcho" />
</feature>
<feature name="Globalization">
<param name="ios-package" value="CDVGlobalization" />
</feature>
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
</feature>
<feature name="Logger">
<param name="ios-package" value="CDVLogger" />
</feature>
<feature name="LocalStorage">
<param name="ios-package" value="CDVLocalStorage" />
</feature>
<plugins>
</plugins>
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="UIWebViewBounce" value="true" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="EnableLocation" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="ShowSplashScreenSpinner" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="OpenAllWhitelistURLsInWebView" value="false" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="fullscreen" value="true" />
<preference name="webviewbounce" value="true" />
<access origin="*.googleapis.com"/>
<access origin="*.gstatic.com"/>
<access origin="*.s3.amazonaws.com"/>
</widget>
對於未來的搜索者(像我一樣!),我在嘗試將控制台插件添加到項目時遇到了類似的問題。 安裝插件后,我缺少的一步是確保插件的源文件(CDVlogger.m)'目標成員資格'設置包含我的應用程序名稱。
我遇到過同樣的問題。 我剛剛使用node的包管理器下載了cordova 3.0命令行工具。 然后我使用Terminal中的工具創建我的項目,為其添加平台,並像這樣構建它。
cordova create myApp com.project.RobertW myApp
cd myApp
cordova platform add ios
cordova platform add android
cordova build
在此之后,當我試圖在模擬器中運行它時,我在Xcode中看到了相同的錯誤。 現在默認情況下,PhoneGap似乎不包含項目中的任何插件,因此即使在配置文件中,它們也可能不在插件文件夾中。 您必須手動或通過命令行工具添加它們。 我使用命令行工具,因為我覺得它更容易。
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git
cordova build
這樣做后,我再次在模擬器中運行myApp,一切正常。 這里有一些關於命令行工具的好的說明:
http://docs.phonegap.com/en/3.0.0/guide_cli_index.md.html#The%20Command-line%20Interface
我想如果PhoneGap 3.0需要Logger,Device和Network Status它會自動包含這些插件,但在我的情況下卻沒有。 希望這可以幫助。
編輯:在Xcode的iOS版config.xml中,您還需要進行此更改以使Logger插件正常工作。 以下是默認值。
<feature name="Console">
<param name="ios-package" value="CDVLogger" />
</feature>
改為上面這個
<feature name="Logger">
<param name="ios-package" value="CDVLogger" />
</feature>
現在你的所有控制台功能都可以運行而不會出錯。
我使用Phonegap 3.0.0時遇到了與設備信息插件相同的問題。 要解決這個問題,我只需卸載並重新安裝插件,然后重建我的項目。
phonegap local plugin remove org.apache.cordova.device
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git
phonegap local build ios
我回去使用舊的<plugin>
格式。 雖然它已被棄用,但它是唯一適合我的方式。
<plugins>
<plugin name="Device" value="CDVDevice" />
<plugin name="Logger" value="CDVLogger" />
...
</plugins>
我自己遇到過這個問題。 發現唯一的解決方案是在通過CLI添加插件后運行cordova prepare
。 prepare
將必要的文件復制到platforms
文件夾中的XCode項目。
我認為這應該作為build
命令的一部分完成,或者如果項目存在則執行plugin add
命令。 也許這是一個錯誤,也許是故意的,但我找不到很多文檔。
類似的問題與答案 。
發生在使用Xcode 6的phonegap 3.5上的我
腳步:
phonegap plugin remove org.apache.cordova.camera
phongap plugin add org.apache.cordova.camera
phongap platform remove ios
phongap build ios
可能不是最好的解決方案 - 因為你丟失了你的xcode設置 - 但它解決了這個問題。
在我的情況下...解決方案是在我的config.xml中為我使用的所有插件添加這行代碼
<feature name="Device">
<param name="ios-package" value="CDVDevice" />
<param name="onload" value="true" />
</feature>
<feature name="FCMPlugin">
<param name="ios-package" value="FCMPlugin" />
<param name="onload" value="true" />
</feature>
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" />
<param name="onload" value="true" />
</feature>
<feature name="CDVLocation">
<param name="ios-package" value="CDVLocation" />
<param name="onload" value="true" />
</feature>
<feature name="cordova.logger">
<param name="ios-package" value="CDVLogger" />
<param name="onload" value="true" />
</feature>
<feature name="Logger">
<param name="ios-package" value="CDVLogger" />
<param name="onload" value="true" />
</feature>
<feature name="Console">
<param name="ios-package" value="CDVLogger" />
<param name="onload" value="true" />
</feature>
<feature name="SQLitePlugin">
<param name="ios-package" value="SQLitePlugin" />
<param name="onload" value="true" />
</feature>
<feature name="Keyboard">
<param name="ios-package" value="IonicKeyboard" />
<param name="onload" value="true" />
</feature>
我也有這個問題。 我只是自己創建了目錄(platforms / ios / appname / Plugins / org.apache.cordova.console)並將丟失的文件(CDVLLogger.h和CDVLLogger.m)復制到此目錄中。 然后編譯成功完成。
我使用的是cordova 3.5版
如果你使用Ionic得到這個錯誤然后嘗試運行cordova run ios --device
而不是ionic run ios --device
它為我解決了這個問題。 由於該項目是Ionic 1項目,我認為Ionic cli v2搞砸了。 在更新Ionic cli之前我沒有遇到任何問題。
我遇到了與SQLitePlugin相同的問題。 我在這篇文章中嘗試了一些提議的解決方案,但它們都沒有對我有用。 然后我嘗試刪除平台/ ios目錄(我正在為iPhone開發),再次添加ios平台(離子添加平台ios)並重建項目。 突然間,一切都像魅力一樣。 我沒有必要創建一個新項目,也不必刪除插件。
適用於新的cordova版本
在現有項目中大量節省插件
如果您有一個預先存在的項目,並且想要在項目中保存所有當前添加的插件,則可以使用:
cordova plugin save
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.