“'CDVPlugin.h' file not found” in Cordova as component (Cleaver)

主宰稳场 提交于 2019-12-17 15:36:22

问题


I added Cordova as a component to my iOS project. Adding a custom plugin leads to the error, despite that the plugin works in a Cordova-only project:

'CDVPlugin.h' file not found
  • PhoneGap / Cordova 1.7.0 installed
  • Checked multiple times to correctly implement the steps https://github.com/apache/incubator-cordova-ios/blob/master/guides/How%20to%20Use%20Cordova%20as%20a%20Component.md ("Adding Cleaver to your Xcode project (CordovaLib sub-project)")
  • The Plugin works in a plain cordova-based application (Cordova Xcode template)
  • Adding "-all_load" to the 'other linker flags' in the main project does have no effect

The problematic part is as follows:

#import <Foundation/Foundation.h>

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

What am I missing?


回答1:


For xcode7 add "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" to your Header Search Paths (and you may need to set Enable Bitcode to No - was necessary for me, but may be related to different problem with xc7)




回答2:


Click on the project icon in the Project Navigator,

select your Project, then select the "Build Settings" tab

Enter "Header Search Paths" in the search field

Add "$(CORDOVALIB)/Classes" and check the Recursive checkbox - for the Header Search Paths value

optional Add "-all_load" and "-Obj-C" - for the Other Linker Flags value

see detailed description (step 17)




回答3:


Change your header file to:

#import <Cordova/CDVPlugin.h>

it is working in my application.




回答4:


I had this issue using Cordova. Come to find out my CordovaLib folder under the ios platform directory vanished.

I did:

cordova platform remove ios

then

cordova platform add ios

...and this fixed the issue.




回答5:


I have spent awful lot of time trying to fix the same issue in my project, so let me share my findings. It might be relevant for those who are able to build the project in one configuration, but in another configuration (e.g. when building unit tests) precompiler fails to find CDVPlugin.h.

You have to make sure that CordovaLib sub-project has the same set of configurations as your main project.

  1. Select the main project in Xcode in project navigator.
  2. Click on the project icon (above the Targets).
  3. Select Info tab.
  4. Expand Configurations.

So, this is a set of your app configurations. In my example it looked like this:

You need to have the same set of configurations in your CordovaLib sub-project.

  1. Select CordovaLib sub-project.
  2. Click on the project icon (above the Targets).
  3. Select Info tab.
  4. Expand Configurations.
  5. Make sure you have the same set of configurations as in the main project. If some configurations are missing:
    1. Click + button.
    2. Select Duplicate "Release" Configuration
    3. Give the right name for configuration. Copy-paste it from main project settings.

Now perform a clean build.




回答6:


Note: Phonegap 2.9.1 (Nov 2013))

I encountered the same problem while trying to make an open source "C" phone gap plugin work. The solution was to add the Cordovalib.xcodeproj to the target project, once done, click on your_project.xcodeproj - you will need to look in the Target Settings, under the Build Phases Tab, make sure that Cordovalib is added in Target Dependencies.

Once done it should allow the statement: #import to work.




回答7:


replace

import

with (

import "Classes/CDVPlugin.h"

OR

import "CordovaLib/Classes/CDVPlugin.h")




回答8:


Have a look at my answer here:

I had the same problem while installing the ShareKit plugin on Xcode 4.5, cordova 2.1.0 & JQM 1.2.0. The problematic block was:

#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

What worked for me is commenting out the #ifdef line as well as commenting out the whole #else block.

Also, the #import line was already commented out in the source code that I downloaded with the plugin, so I didn't bother messing with that.

Might be of some help to you.




回答9:


thakns user513790 and Fabio Antunes. After following answer I had to set Always Search User Paths to Yes




回答10:


In xcode 8 and 8 + simply commenting the line worked for me:

#import ...

This is specifically useful if you are trying to extend IOS app build using ionic or cordova to have watchkit or widget control natively.



来源:https://stackoverflow.com/questions/10714600/cdvplugin-h-file-not-found-in-cordova-as-component-cleaver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!