Cordova组件(Cleaver)中出现“未找到'CDVPlugin.h'文件”的错误

25

我将Cordova添加为我的iOS项目的组件。尽管该插件在仅使用Cordova项目中可以正常工作,但是添加自定义插件会导致错误:

'CDVPlugin.h' file not found

问题出在以下部分:

#import <Foundation/Foundation.h>

#ifdef CORDOVA_FRAMEWORK
#import <Cordova/CDVPlugin.h>
#else
#import "CDVPlugin.h"
#endif

我错过了什么?

9个回答

57

对于xcode7,请将"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"添加到Header Search Paths中(您可能需要将Enable Bitcode设置为No - 对我来说是必需的,但可能与xc7的不同问题有关)


2
准时!这是正确的答案。谢谢您,亲切的先生! - jlstr
只需将"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"添加到我的头文件搜索路径中,就可以解决我的问题。启用Bitcode仍然为YES。需要注意的是,在从之前的版本7更新到版本7.1(7B91b)的Xcode后出现了此问题。 - Lisarien
正如@Lisarien所说,启用BitCode并不是必要的。只需添加正确的路径即可完成工作!这对我很有效! - Dam Fa
您让我感到非常开心!谢谢您! - Massimo Polimeni
不行啊,我的位码 NO,还有字符串 "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" 也不行。 - user3841627
显示剩余3条评论

24

在 Project Navigator 中点击项目图标,

选择你的项目,然后选择 "Build Settings" 选项卡

在搜索框中输入 "Header Search Paths"

Header Search Paths 添加 "$(CORDOVALIB)/Classes" 并勾选递归复选框

可选 为 Other Linker Flags 添加 "-all_load""-Obj-C"

详见详细说明(步骤17)


https://github.com/purplecabbage/GDCordova/blob/master/docs/How%20to%20Use%20Cordova%20as%20a%20Component.md - daserge

22

请将您的头文件更改为:

#import <Cordova/CDVPlugin.h>

这在我的应用程序中正常工作。


这是Xcode 7.1的正确解决方案 - 其他所有方法都无法解决我的问题。 - rcat24

21

我在使用Cordova时遇到了这个问题。后来发现我的ios平台目录下的CordovaLib文件夹不见了。

我做了以下操作:

cordova platform remove ios

那么

cordova platform add ios

...并且这解决了问题。


3
是的,是的,是的。这是解决所有生活问题的答案。 - Matt
2
几个月后,我又面临了这个问题,我没有意识到我已经发布了一个解决方案。我的自己的修复对我没有用 :( - Post Impatica

5

我花了很多时间尝试解决在我的项目中相同的问题,所以让我分享我的发现。对于那些能够在一个配置中构建项目,但在另一个配置中(例如构建单元测试时)预编译器无法找到CDVPlugin.h的人来说,这可能是相关的。

你必须确保CordovaLib子项目具有与你的主项目相同的配置集。

  1. 在Xcode的项目导航器中选择主项目。
  2. 点击项目图标(在目标上面)。
  3. 选择信息选项卡。
  4. 展开配置

这是你应用程序配置的一组。在我的例子中,它看起来像这样: App configurations

你需要在CordovaLib子项目中拥有相同的配置集。

  1. 选择CordovaLib子项目。
  2. 点击项目图标(在目标上面)。
  3. 选择信息选项卡。
  4. 展开配置
  5. 确保你有和主项目相同的配置集。如果缺少某些配置:
    1. 点击+按钮。
    2. 选择复制"Release"配置
    3. 为配置给出正确的名称。从主项目设置中复制粘贴。

现在执行干净的构���。


1
注意:Phonegap 2.9.1(2013年11月)
当我试图让一个开源的“C” PhoneGap插件工作时,遇到了同样的问题。解决方法是将Cordovalib.xcodeproj添加到目标项目中,完成后,单击your_project.xcodeproj - 您需要查看目标设置,在“Build Phases”选项卡下,确保Cordovalib已添加到目标依赖项中。
完成后,它应该允许语句: #import 工作。

0
在Xcode 8和8+中,简单地注释掉这一行对我起作用了:
#import ...

如果您正在尝试使用Ionic或Cordova扩展IOS应用程序构建,以便本地具有WatchKit或小部件控件,则此功能特别有用。


0

请看我的回答这里

我在安装ShareKit插件到Xcode 4.5,cordova 2.1.0和JQM 1.2.0时遇到了同样的问题。有问题的代码块是:

#ifdef CORDOVA_FRAMEWORK
#import <Cordova/CDVPlugin.h>
#import <Cordova/CDVPluginResult.h>
//#import <Cordova/JSONKit.h>

#else
#import "CDVPlugin.h"
#import "CDVPluginResult.h"
#import "JSONKit.h"
#endif

对我有用的是将 #ifdef 行注释掉以及将整个 #else 块注释掉。

此外,#import 行在我下载插件时的源代码中已经被注释掉了,所以我没有费心去处理它。

希望对你有所帮助。


-1

替换

引入

为 (

引入 "Classes/CDVPlugin.h"

或者

引入 "CordovaLib/Classes/CDVPlugin.h")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接