Tag: 依赖关系

解决React Native项目中的CocoaPods问题

如果您有以下问题, “我将React-Native更新到最新版本,而CocoaPods无法解决依赖关系…” “ CocoaPods找不到Pod’Folly’的兼容版本……” “`Pod install`不会安装所有依赖项,无法安装GLog …” 那么你来对地方了。 在此博客中,我将介绍一些步骤/答案/方法/方法来解决与React Native项目中的CocoaPods有关的问题。 开始吧… 1.配置CocoaPods依赖关系 确保已阅读有关配置CocoaPods依赖项的官方文档。 与现有应用程序集成·React Native 从头开始新的移动应用程序时,React Native很棒。 但是,它对于添加… facebook.github.io 也很好。 从官方文档开始总是很好。 特别是与与第三方依赖项(例如GLog和Folly)有关的错误,重要的是您的podspec正确。 因此,请确保将您的Podfile与官方文档中指定的Podfile进行比较。 2.更新pod存储库 您的本地Pod存储库可能已过时。 什么?!! 因此,CocoaPod维护spec-repo的本地克隆。 此仓库基本上是所有可用豆荚和版本的列表。 它位于〜/ .cocoapods / repos中。 因此,请确保在尝试任何其他操作之前先更新此存储库。 您可以通过运行以下命令来更新它, $ pod repo更新 官方文档在这里 。 3.验证Xcode的活动dev目录路径 开发人员通常会使用多个版本的Xcode,因此他们不得不在不同版本之间不断跳来跳去,在此过程中,他们忘记了更改Xcode的活动开发人员目录。 建造大型物件时,可以忘记小型物件。 对? ……不! 那么如何解决呢? 首先通过运行检查Xcode的活动开发人员目录, xcode选择-p 这应该打印活动的dev目录路径/Applications/Xcode.app/Contents/Developer 。 如果您以不同的方式命名您的Xcode应用程序,则可能会有所不同,但理想情况下应该是这个。 xcode-select控制xcrun,xcodebuild,cc和其他Xcode和BSD开发工具使用的开发人员目录的位置。 无论如何,如果您选择的xcode版本与此命令显示的版本不同,则应通过运行来切换活动的dev目录, sudo xcode-select -s […]

在Swift应用中使用C,C ++和Objective-C框架

在Swift应用中使用C,C ++和Objective-C框架 我在尝试中做了一个演讲!Swift东京今年关于在Swift应用程序中使用C,C ++和Objective-C框架。 演示文稿非常简洁,因此我决定详细记录内容以提供更多信息。 本文的结构将分为: C,C ++,Objective-C和Swift之间的语言连接 如何建立依存关系 为什么选择包装器以及如何编写包装器 C,C ++,Objective-C和Swift之间的语言连接 C到Swift C已经47岁了,Swift是一种新的强大的开源语言,它支持C。尽管它不能编译C代码,但它与C具有直接的互操作性,因此我们可以在Swift中直接使用已编译的C代码。 从C ++到Swift C ++和Swift无法直接交谈,因此需要一些手动的中间阶段,例如C或Objective-C。 C ++是C的超集,它提供了面向对象编程的支持。 由于Swift支持C,一种方法是使用仅C的API公开C ++库,然后Swift应用程序可以直接使用该库。 Objective-C ++可以编译包含C ++和Objective-C组合的源文件。 另一种方法是将C ++库包含在Objective-C框架中,并将其提供给Swift。 从Objective-C到Swift Swift可以与可可和大量现有的Objective-C代码一起使用,因此Objective-C与Swift之间的通信非常简单。 如何建立依存关系 为了能够在项目中使用框架,我们首先需要设置依赖项。 我将一一示范。 C库到Swift应用 AC库通常被编译为静态库,这里的挑战是库不包含接口。 Swift也不会自动读取头文件。 因此,这里有一个问题:C标头不可见。 解决此问题的技巧是使用模块映射。 有关在Swift应用程序中设置C库依赖关系的逐步指南,请阅读我的其他中篇文章。 C ++库到Swift应用 正如我之前提到的,Swift无法直接与C ++对话,因此让我们添加一些手动中间阶段,例如,创建一个包含C ++库的Objective-C框架。 在Objective-C框架内部,我们需要将所有C功能包装到Objective-C中。 为了能够在一个文件中同时编译C和Objective-C,诀窍是使用Objective-C ++。 我们可以通过将.m文件重命名为.mm来实现 。 有关详细的设置,请参阅这篇中等文章。 Swift应用的Objective-C框架 为了能够在快速的应用程序中使用Objective-C框架,设置非常简单。 我们需要将Objective-C框架或项目包含到快速应用程序中。 如果我们不使用任何依赖关系管理工具,则只需将Objective-C xcodeproj或框架拖到swift项目中即可。 然后链接框架并导入Objective-C模块,现在我们完成了。 […]

在Swift项目中设置C库依赖关系(第2/2部分)

选项2:使用模块映射 T L; DR 第1部分 描述了如何使用公共标头在Swift项目中设置C库依赖项。 设置C库依赖项的更整洁的方法是使用模块映射。 第一步:创建一个快速项目 Xcode->新建->项目->可可触摸框架->语言:Swift->下一步。 我将项目命名为CDependencyTutorial2 。 第二步:设置项目依赖项 我有一个名为ExampleCLibrary的静态C框架。 将ExampleCLibrary.xcodeproj拖到CDependencyTutorial2项目中。 第三步:将C库设置为子模块 选择目标CDependencyTutorial2- >常规->链接的框架和库->添加libExampleCLibrary.a 。 转到CDependencyTutorial2项目的目录,创建一个文件夹,我将其称为CWrapper,在该文件夹内,创建一个文件,并将其称为module.modulemap 。 该路径应该是您的 C标头的路径。 选择目标CDependencyTutorial2- >构建设置->导入路径 ->在modulemap的目录中键入。 对我来说是: 第四步:现在在swift项目中使用它。 选择CDependencyTutorial2项目,添加一个新的swift文件。 让我们写一些代码。 randomString是C库中的一个函数,现在可以在Swift中识别。 是的,😀成功! 简介:为了能够在Swift项目中使用C库,主要有两个步骤:在文件夹中创建module.modulemap , 导入路径应指向模块映射目录。 在第1部分中,如果我使用public标头方法,则C标头也将公开。 使用这种方法,我们就没有这个问题。 我对这种解决方案感到非常满意。 😀 您是否要下载项目? 请点击这里。 所以你怎么看? 想和我讨论吗? 这是我的推特:@humlelu。