首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让react-native-fbsdk与CocoaPods协同工作

让react-native-fbsdk与CocoaPods协同工作
EN

Stack Overflow用户
提问于 2017-07-14 01:57:48
回答 3查看 4.3K关注 0票数 5

我一直在尝试让react-native-fbsdk与CocoaPods一起工作,因为我更喜欢将Facebook SDK作为pod install过程的一部分,但我没有太多的运气。我知道我可以react-native link npm库并手动下载和添加必要的框架,但当我有一个完美的包管理器时,这似乎相当愚蠢。

the documentation判断,它应该是相当简单的-只需向Podfile添加必要的pod,对吗?但是不管我怎么尝试,原生FBSDK模块似乎从来没有被包含在内。我已经尝试了一大堆不同的Podfile,有些带有use_framework!pod 'Bolts',有些只有pod 'FBSDKCoreKit'。这就是我目前使用的:

代码语言:javascript
复制
target 'FacebookPods' do
  pod 'FBSDKCoreKit'
  pod 'FBSDKShareKit'
  pod 'FBSDKLoginKit'

  target 'FacebookPodsTests' do
    inherit! :search_paths
  end
end

但是,当我运行我的测试应用程序并尝试对react-native-fbsdk模块做任何事情时,我收到错误,抱怨各种本机模块未定义。这是我尝试访问LoginManagerindex.ios.js文件

代码语言:javascript
复制
import React, {Component} from "react"
import {AppRegistry, Text} from "react-native"
import {LoginManager} from "react-native-fbsdk"

export default class FacebookPods extends Component {
  componentWillMount() {
    LoginManager.logInWithReadPermissions(["email"])
      .then(() => console.log("Success!"))
      .catch((err) => console.log("Failure!", err))
  }

  render() {
    return <Text>Hello World</Text>
  }
}

AppRegistry.registerComponent("FacebookPods", () => FacebookPods)

但这会在FBLoginManager.js中抛出错误undefined is not an object (evaluating 'LoginManager.logInWithReadPermissions'。对NativeModules的进一步检查显示,其中根本没有包含任何原生的FBSDK模块。在启动时,我还收到以下警告:

代码语言:javascript
复制
2017-07-13 19:50:19.006 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBLikeView" does not exist
2017-07-13 19:50:19.007 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBLoginButton" does not exist
2017-07-13 19:50:19.008 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBSendButton" does not exist
2017-07-13 19:50:19.009 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBShareButton" does not exist

所以,是的,我完全不知所措。在我看来,简单地添加pod就应该足以包含框架。我已经在网上搜索了我可能遗漏的任何其他步骤,但没有太多,除了react-native-fbsdk项目上的一些问题,这些问题后来被删除了。

EN

回答 3

Stack Overflow用户

发布于 2018-08-14 05:22:05

我遇到了这个问题,通过将以下内容添加到我的pod文件中,我设法让react-native-fbsdk与安装的Facebook SDK一起工作:

代码语言:javascript
复制
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

并在AppDelegate.m中导入以下内容:

代码语言:javascript
复制
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

请注意,这些导入与react-native-fbsdk自述文件中的建议不同。这是因为FBSDKCorekit.frameworkFBSDKShareKit.frameworkFBSDKLoginKit.framework都不可用。

您还需要在Xcode的General选项卡中链接libFBSDKShareKit.alibFBSDKCoreKit.alibFBSDKLoginKit.a。这是仅有的三个可以链接的核心/登录/共享内容。它们引用pods,查看pods目录,您会发现没有.framework文件,只有.h文件,所以这些文件就是我们导入AppDelegate.m中的文件。这(我认为)为react-native-fbsdk提供了它需要的SDK组件中的所有文件。

票数 8
EN

Stack Overflow用户

发布于 2017-08-06 10:35:05

我的Podfile是这样设置的(不确定是否需要Bolts框架pod ):

pod 'Bolts' pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'

我必须执行react-native link以确保libRCTFBSDK.a在xcode的构建目标=>构建短语=> "Link Binary with libraries“列表中。如果没有,您可能需要手动添加libRCTFBSDK.a。我发现,一旦我运行了react-native link,并且libRCTFBSDK.a在该列表中,xCode就可以正确编译。

票数 6
EN

Stack Overflow用户

发布于 2019-02-22 23:35:03

如果您使用cocoapods,react原生将使用cocoapods来链接库。我创建了一个新项目,然后在运行'pod init‘和'pod install’之前安装并链接所有包。也许在链接包时来自cocoapods的这个错误。所有的包都需要'react-native link‘,这是你在运行'pod install’之后安装的,它不起作用。我想我们可以在运行react原生链接之前解算cocoapod。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45087919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档