17

我最近从 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>
4

13 回答 13

31

对于未来的搜索者(比如我!),我在尝试将控制台插件添加到我的项目时遇到了类似的问题。安装插件后我缺少的步骤是确保插件 (CDVlogger.m) 的“目标成员资格”设置的源文件包含我的应用程序名称。

于 2013-12-13T21:58:32.753 回答
26

与对我有用的答案类似的问题:

删除 ./plugins/ios.json 以确保重新构建插件。

找不到Phonegap 3.0 IOS插件

于 2014-03-13T00:12:28.897 回答
17

我遇到过同样的问题。我刚刚使用节点的包管理器下载了 cordova 3.0 命令行工具。然后我使用终端中的工具创建我的项目,向其中添加平台,并像这样构建它。

cordova create myApp com.project.RobertW myApp
cd myApp
cordova platform add ios
cordova platform add android
cordova build

之后,当我尝试在模拟器中运行 Xcode 时,我在 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 需要记录器、设备和网络状态,它会自动包含这些插件,但在我的情况下它没有。希望这可以帮助。

编辑:在 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>

现在您的所有控制台功能都应该可以正常工作而不会引发错误。

于 2013-08-02T02:00:11.780 回答
6

我在使用 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
于 2013-10-01T10:31:07.803 回答
4

我回到使用旧<plugin>格式。虽然它已被弃用,但它是唯一对我有用的方法。

<plugins>
    <plugin name="Device" value="CDVDevice" />
    <plugin name="Logger" value="CDVLogger" />
    ...
</plugins>
于 2013-06-30T00:51:09.500 回答
3

在我的情况下......解决方案是为我使用的所有插件添加这行代码......在我的 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>
于 2016-12-21T20:06:33.317 回答
2

我自己遇到了这个问题。cordova prepare通过 CLI 添加插件后, 发现唯一的解决方案正在运行。prepare将必要的文件复制到文件platforms夹中的 XCode 项目。

我认为这应该作为build命令的一部分来完成,或者plugin add如果项目存在,则应该作为命令的一部分来完成。也许这是一个错误,也许是故意的,但我找不到太多关于它的文档。

类似的问题与答案

于 2013-10-21T13:42:27.030 回答
2

在 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 设置——但它解决了这个问题。

于 2015-06-15T01:32:17.600 回答
1

我也有这个问题。我只是自己创建了目录(platforms/ios/appname/Plugins/org.apache.cordova.console)并将丢失的文件(CDVLLogger.h 和 CDVLLogger.m)复制到该目录。然后编译成功。

我正在使用科尔多瓦 3.5 版

于 2014-09-29T20:32:13.560 回答
0

我们在 Xcode 中打开了项目,并查看了Project navigator侧边栏。

在虚拟“插件”文件夹下,我们注意到该文件夹​​中缺少某些插件的文件。

侧边栏中的 Plugins 文件夹包含一些插件文件

解决方案是右键单击插件并选择将文件添加到“ProjectName”...

然后我们导航到插件的文件夹并在那里添加所有.swift.m.h文件。

这样做会在文件中创建新的引用,platforms/ios/[ProjectName].xcodeproj/project.pbxproj因此我们保留了这些更改。

于 2019-04-16T02:20:35.150 回答
0

如果您使用 Ionic 遇到此错误,然后尝试运行cordova run ios --device而不是ionic run ios --device它为我解决了这个问题。我认为 Ionic cli v2 搞砸了,因为该项目是 Ionic 1 项目。在更新 Ionic cli 之前我没有遇到任何问题。

于 2016-12-29T22:52:02.167 回答
0

对于新的科尔多瓦版本

在现有项目中大量保存插件

如果您有一个预先存在的项目,并且想要将所有当前添加的插件保存在项目中,您可以使用:

cordova plugin save
于 2019-07-15T13:48:56.283 回答
0

我对 SQLitePlugin 也有同样的问题。我在这篇文章中尝试了一些建议的解决方案,但没有一个完全适合我。然后我尝试删除 platform/ios 目录(我正在为 iPhone 开发),再次添加 ios 平台(ionic add platform ios)并重建项目。突然间,一切都像魅力一样运转起来。我不必创建新项目,也不必删除插件。

于 2017-03-30T04:55:34.750 回答