Phonegap在构建期间不会将插件文件复制到ios平台目录

时间:2014-01-16 16:48:31

标签: ios cordova

rm -rf plugins/*
rm -rf platforms/*

phonegap build ios //this works

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

phonegap build ios

添加插件后为ios构建失败。这是错误:

** BUILD FAILED **


The following build commands failed:
    CompileC build/PondMD.build/Debug-iphoneos/PondMD.build/Objects-normal/armv7/CDVDevice.o PondMD/Plugins/org.apache.cordova.device/CDVDevice.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
2014-01-16 10:32:15.055 xcodebuild[69605:1007] [MT] PluginLoading: Required plug-in compatibility UUID 37B30044-3B14-46BA-ABAA-F01000C27B63 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/XCode4_beginning_of_line.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2014-01-16 10:32:16.630 xcodebuild[69605:4203]  DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-3575/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:78
Details:  Failed to load dependencies output contents from ``/Users/william/working/PhonegapPondMD/platforms/ios/build/PondMD.build/Debug-iphonesimulator/PondMD.build/Objects-normal/i386/CDVDevice.d''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “CDVDevice.d” couldn’t be opened because there is no such file." UserInfo=0x7fe7a57a7440 {NSFilePath=/Users/william/working/PhonegapPondMD/platforms/ios/build/PondMD.build/Debug-iphonesimulator/PondMD.build/Objects-normal/i386/CDVDevice.d, NSUnderlyingError=0x7fe7a57aaed0 "The operation couldn’t be completed. No such file or directory"}. User info: {
    NSFilePath = "/Users/william/working/PhonegapPondMD/platforms/ios/build/PondMD.build/Debug-iphonesimulator/PondMD.build/Objects-normal/i386/CDVDevice.d";
    NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}.
Function: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *__strong, F) [F = <lambda at /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-3575/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:168:73>]
Thread:   <NSThread: 0x7fe7a57ab420>{name = (null), num = 7}
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.

问题似乎是phonegap没有将objective-c类和标题复制到/ platforms / ios /

william-macbook-pro:PhonegapPondMD william$ ls -l plugins/
total 8
-rw-r--r--   1 william  staff  296 Jan 16 10:32 ios.json
drwxr-xr-x  11 william  staff  374 Jan 16 10:30 org.apache.cordova.device

william-macbook-pro:PhonegapPondMD william$ ls -l platforms/ios/PondMD/Plugins/
total 8
-rw-r--r--  1 william  staff  890 Jan 16 10:30 README

william-macbook-pro:PhonegapPondMD william$ phonegap -v
3.3.0-0.18.0

4 个答案:

答案 0 :(得分:21)

我有同样的问题,我解决了它在项目名称的第一个字母中用大写创建项目。是的,这似乎令人难以置信,但这是解决方案。

答案 1 :(得分:13)

我遇到了同样的问题,并使用此处的说明解决了问题:Cordova 3.2 ios add plugin "Which config.xml? Where is it?"

总结一下,我做了以下步骤:
1.通过以下方式删除ios平台:cordova平台删除ios
2.重新安装插件
3.(重新)通过以下方式添加了ios平台:cordova platform add ios
4.再次建造项目

在此之后,它建立得很好。

答案 2 :(得分:0)

当我使用cordova plugin add命令添加插件时,它会将插件代码放在 plugins 文件夹中。 当您检查ios平台内的插件文件夹时,您会看到该插件不可用。

所以我创建了一个与插件名称相同的文件夹,并将插件src /目录中的文件复制到此文件夹中。在此之后,项目正确构建。

我还发现在xcode中打开本机项目以更接近地检查项目很有用。

答案 3 :(得分:0)

我选择了将./plugins / ..插件文件复制到ios平台插件目录的解决方案。无论谁需要它,这里都是一个小帮手。

(npm install gulp gulp-rename)

(gulpfile.js)

var gulp = require("gulp");
var rename = require("gulp-rename");
gulp.task("cp-plugins-ios", function(){
   gulp.src(["./plugins/*/src/ios/*"],{base: 'ios'}).pipe(rename(function(path){
      var myDir = path.dirname.replace("src/ios","");
      path.dirname = myDir;
   })).pipe(gulp.dest("./platforms/ios/projectName/Plugins/"));
});