Wizcorp / phonegap-facebook-plugin:构建ios失败

时间:2016-02-06 16:23:46

标签: ios facebook ionic-framework

当我尝试运行离子构建ios时 或尝试为离子创建的xcode项目构建存档我得到此错误

  

** FacebookConnectPlugin.m **:27:44:错误:没有可见的@interface用于' CDVPlugin'声明选择器' initWithWebView:'自我=   (FacebookConnectPlugin *)[超级initWithWebView:theWebView]; ~~~~~   ^ ~~~~~~~~~~~~~~   /Applications/MAMP/htdocs/hybrid-mobile-app/platforms/ios/qudratApp/Plugins/phonegap-facebook-plugin/FacebookConnectPlugin.m:238:28:   警告:常量2与布尔表达式的比较总是如此   false [-Wututological-constant-out-of-range-compare] if   (!command.arguments == 2){~~~~~~~~~~~~~~~~~~ ^ ~1警告和1   生成错误。

     

**建筑失败**

     

以下构建命令失败:CompileC   建立/ qudratApp.build / Debug-iphonesimulatorqudratApp.build /对象 - 正常/ I386 / FacebookConnectPlugin.o   qudratApp /插件/ PhoneGap的-Facebook的插件/ FacebookConnectPlugin.m   正常的i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler(1   失败)错误:命令的错误代码65:带args的xcodebuild:   -xcconfig,/应用/ MAMP / htdocs中/混合移动应用程序/平台/ IOS /科尔多瓦/集结debug.xcconfig,-project,qudratApp.xcodeproj,ARCHS = I386,-target,qudratApp, - 构型,调试, - SDK,iphonesimulator,构建,VALID_ARCHS = I386,CONFIGURATION_BUILD_DIR = /应用/ MAMP / htdocs中/混合移动应用程序/平台/ IOS /建造/仿真器,SHARED_PRECOMPS_DIR = /应用/ MAMP / htdocs中/混合移动应用程序/平台/ IOS /建造/ sharedpch

2 个答案:

答案 0 :(得分:7)

我通过本地克隆的副本安装了phonegap插件facebook,并在安装后将FacebookSDK.framework重新添加到Xcode,但这些都不适用于我。我解决的方法是安装https://github.com/jeduan/cordova-plugin-facebook4

  1. 删除phonegap插件:

    ionic plugin rm phonegap-facebook-plugin

  2. 克隆下一个插件:

    git clone https://github.com/jeduan/cordova-plugin-facebook4.git

  3. 手动添加插件:

    cordova -d plugin add PATH/cordova-plugin-facebook4 --variable APP_ID="*****" --variable APP_NAME="*****"

  4. 这对我有用。

答案 1 :(得分:1)

您可以通过两种方式解决此问题:

1- [super initWithWebView:theWebView]替换[super init]

2-向FacebookConnectPlugin.m添加编译器标志以禁用ARC,编译器标志为-fno-objc-arc

从我的观点来看,我推荐第二种解决方案,因为它不会影响代码。

如果您正在寻找一步一步的解决方案,请在Xcode中执行以下操作。

  1. 选择您的主项目。
  2. 选择目标
  3. 转到构建阶段
  4. 展开已编译的资源,点击选择“FacebookConnectPlugin.m”
  5. 在“FacebookConnectPlugin.m”的右侧,您可以添加 以下编译器标志

    -fno-objc弧

  6. 现在,如果您想详细了解问题:

    FacebookConnectPlugin.m是在非ARC环境下构建的,他控制着自己的内存消耗。但Xcode不允许这样做,因为它使用ARC来控制整个应用程序的内存消耗。所以解决这个冲突的方法是修改FacebookConnectPlugin.m代码以使用ARC,或者通过添加编译器标志告诉Xcode你负责这个类的内存管理。