Tag: cocoapods

制作自己的CocoaPods-第3部分

到目前为止,学习如何安装cocoapods,以及如何以私人和公共两种方式来创建和分发cocoapods。 在这个故事中,您将学习如何利用自己的可可足纲(cocoapod),在上半部分私下分发。 假设您知道如何利用公开出售的椰壳足类。 私人椰壳纲的利用 假设每个人都知道吊舱的安装过程,团队中的每个人在使用私人椰壳前应遵循的步骤很少。 每个人都应该可以访问私有规范存储库 每个人都应使用以下命令将专用规格存储库添加到其本地cocoapod安装目录(ie ~/.cocoapods/repos/) 。 私有规范存储库的远程URL应该在项目Podfile的顶部指定。 这样, pod install命令便知道在哪里可以找到要安装到项目中的所需pod位置。 $ pod repo add [REPO_NAME] [REMOTE_URL] 让我们通过一个示例项目深入演示。 示范 创建一个新项目,使用私有规范存储库的源URL来安装自己的私有cocoapods,如下所示 创建项目后,需要在项目目录中创建podfile 。 Podfile是一种规范,描述了一个或多个Xcode项目的目标依赖项。 运行以下命令以创建Pod文件 $ cd [PROJECT_DIRECTORY] $ pod init $ open-一个Xcode podfile 通过最后一个命令,Xcode打开Podfile进行编辑。 如下所示添加私有规范回购源URL和私有cocoapod 修改Podfile之后,关闭Xcode并再次移至终端以运行pod install ,如下所示 $ pod安装 分析依赖关系 下载依赖项 使用my_own_cocoapod(0.0.1) 生成豆荚项目 整合客户项目 发送统计 吊舱安装完成! Podfile有1个依赖项,总共安装了1个pod。 成功完成Pod安装过程后,Cocoapod将创建.xcworkspace 。 现在开始,当您要编辑项目时,请打开xcworkspace而不是xcodeproject。 工作区包含您的项目以及相关性,如下所示 恭喜你! […]

iOS:带有CocoaPods的伞框架

本文将教您如何通过CocoaPods分发iOS私有的伞式框架。 目录 1.简介 2.创建具有依赖关系的框架 3.创建一个Pod伞框架 4.分配豆荚 5.集成雨伞盒 介绍 在我以前的项目之一中,我特别需要创建一个包含两个以上框架的框架。 目标是尽可能隐藏这两个子框架的使用。 然后,所有内容都必须作为私有且封闭的Pod发布。 框架不过是一组可以重用的方法和逻辑。 框架是封闭的 ,因此无法读取源代码,只有定义为open或public的方法和类可见并且可以调用。 在Apple开发环境中,一个框架与另一个框架的合并称为“ Umbrella ”。 这种类型的框架旨在隐藏某些子框架的使用,从而促进其使用。 在继续进行此冒险之前,很高兴知道苹果并未正式支持iOS的Umbrella Frameworks,确实引用了官方文档: 不要创建伞框架。 尽管可以使用Xcode创建伞形框架,但是对于大多数开发人员而言,这样做是不必要的,因此不建议这样做。 苹果使用伞形框架掩盖了操作系统中库之间的某些相互依赖关系。 在几乎所有情况下,您都应该可以将代码包含在单个标准框架包中。 或者,如果您的代码具有足够的模块化,则可以创建多个框架,但是在那种情况下,模块之间的依赖关系将是最小的或不存在,因此不应保证为它们创建保护伞。 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html“ Apple文档” 遵循本指南,您将创建一个带有CocoaPods依赖项的子框架,这是一个伞形框架,该框架将子框架与CocoaPods的其他依赖项结合在一起。 然后,您将所有内容发布为私有和封闭的pod,最后,我们将所有内容集成到测试项目中。 创建具有依赖关系的框架 第一步,我们创建带有他的依存关系的子框架。 就我而言,这是一个cocoapod供应的框架,因此我不必创建它。 让我们从创建一个新的Cocoa Touch Framework开始 : 下一步是创建跨平台聚合目标 : 聚合目标没有关联的产品,也没有构建规则。 您可以使用构建子框架所需的依赖关系定义Podfile,然后可以执行以下操作: 吊舱安装 对于此示例,Podfile如下: 添加以下代码: 这种结构将使您可以将源除以归档框架所需的项目划分。 当您创建两个podspec时,这将非常有用,一个用于发布供应商的框架,另一个用于发布开放式框架,非常适合测试。 现在到了在项目中创建正确的连接并使所有工作正常进行的时候了。 将Sources文件夹和Subframework.framework添加到项目中。 然后导航到目标伞的“构建阶段设置”,并添加一个“ 新复制文件阶段” 。 确保Subframework.framework出现在以下字段中: 将二进制文件与库链接 复制捆绑包资源 复制文件 ,将目标设置为Frameworks,并使用活动代码签名 […]

iOS框架+ Bitrise CI + Cocoapods

MoveUpwards / Sejima iOS用户界面库。 通过在GitHub上创建一个帐户来为MoveUpwards / Sejima开发做出贡献。 github.com 为什么Bitrise CI优于其他CI替代品? 我们喜欢Bitrise CI的地方是他的工作流程设置。 与其他一些流行的解决方案相比,您可以提供.yml配置文件,也可以通过易于理解的界面(非常接近Apple Automator)定义要执行的过程。 即使Bitrise CI没有开源计划,您仍然可以免费使用它。 在这种情况下,您的工作流程将根据可用性在共享工作者上执行。 但是说实话,这从来不是我们需要的问题。 [edit]实际上,根据Bitrise CI团队的说法,他们确实有一个开源计划。 选择“应用商店”导出方法, 最后但并非最不重要的一点是,注册一个Webhook,以便在将代码推送到存储库时Bitrise CI可以自动开始构建。 Bitrise CI也将启动第一个工作流程。 如果构建失败,请不要担心,我们将根据需要自定义创建的工作流程。 自定义您的工作流程 返回您的信息中心,然后在可用的应用列表中选择您的应用,然后选择工作流程标签。 默认情况下,Bitrise CI创建的工作流程包含构建和交付iOS应用程序的最少步骤。 就我们而言,除非发布给Cocoapods,否则我们无需发布框架。 首先,让我们删除所有步骤, 但以下步骤除外 : 激活SSH密钥 Git克隆存储库 现在我们已经做了一些清理工作,让我们单击“ Git Clone Repository”步骤下面的“ +”按钮并搜索“ Recreate User Schemes”步骤并选择它,以添加交付过程所需的步骤。 通过以下步骤重复相同的操作: 产生文字档 脚本 发送一条Slack消息(如果您正在使用Slack,否则应考虑使用它) 定制步骤 首先,我们将自定义“生成文本文件”步骤,以创建将在Cocoapods中继中推送的.podspec文件。 首先提供您的podspec文件的名称 在“文本文件的内容”字段中提供您的podspec内容 您可以使用Bitrise CI变量“ $ […]

使用CocoaPods

“ CocoaPods是Swift和Objective-C Cocoa项目的依赖项管理器。 它拥有超过4.8万个库,并在超过300万个应用程序中使用。 CocoaPods可以帮助您优雅地扩展项目。” 您可以在这里阅读更多信息,请参考:https://cocoapods.org/ 让我们看看如何为您的项目创建podfile。 如果您的计算机上未安装CocoaPods,则可以使用 “ gem install cocoapods”命令。 打开终端,然后转到您的项目文件夹。 2.运行命令“ pod init”,它将为您的项目创建一个Podfile,您可以在其中使用CocoaPods用于库,项目中需要的框架。 3.现在,您可以使用Xcode或其他编辑器或使用终端根据需要编辑Podfile。 运行“ vim Podfile”以使用终端进行编辑。 按“ i”进行编辑,修改后按“ esc +:+ w + q”保存并退出编辑。 4.例如,让我们在项目中添加AFNetworking CocoaPod。 参考:https://cocoapods.org/pods/AFNetworking 您始终可以在CocoaPods网站https://cocoapods.org/上搜索所需框架和库的最新CocoaPods。 5.然后运行命令“ pod install”以使库适用于您的项目。 6.现在Xcode已经创建了“ .xcworkspace”,供您进一步使用。 打开项目的“ .xcworkspace”,并进行愉快的编码!!!

将CocoaPods与预先构建的框架一起使用而不是源文件

介绍cocoapods-binary cocoapods-binary是CocoaPods的插件,旨在将预构建的框架链接到项目。 一旦执行pod install命令,它将自动为每个依赖项预先构建一个框架,并将结果链接到您的项目。 这样就可以减少项目的构建时间 ,因为您将仅构建源代码,而不是每次都构建依赖关系。 这确实是朝正确方向迈出的一步。 安装cocoapods-binary 为了安装cocoapods-binary ,我们需要运行brew install cocoapods-binary或gem install cocoapods-binary命令。 在我们的Podfile中使用cocoapods-binary 我们需要在Podfile的开头添加以下行: plugin ‘cocoapods-binary’ 如果我们要对所有依赖项使用预构建的框架,则还可以添加all_binary! 在任何目标或定义之前。 如果我们再次运行pod install ,它将为每个依赖项预先构建一个框架,并将其与我们的项目链接。 如果我们清理并构建它,它将不再浪费大量时间来构建依赖项。 将比特码嵌入到预先构建的框架中 如果我们想将Bitcode嵌入到我们的iOS应用程序中,我们还需要将其嵌入到我们的依赖项中 。 为了使其与预先构建的框架一起使用,我们需要在Podfile中通过添加enable_bitcode_for_prebuilt_frameworks!进行指定enable_bitcode_for_prebuilt_frameworks! 和keep_source_code_for_prebuilt_frameworks! 毕竟all_binary! 。 请注意,您将需要重新运行pod install才能看到更改。 添加例外 如果我们尝试使用预先构建的框架(例如Google Maps iOS SDK)添加某些依赖项,则这些依赖项将不起作用 。 由于它要求将GoogleMaps.bundle文件添加到主项目并在构建时进行复制,因此不建议使用预构建的框架。 为了使它们正常工作,我们需要通过将:binary => false设置为我们要排除的每个依赖项来添加一个例外 。 pod ‘GoogleMaps’, :binary => false 让我们看一个例子 考虑到我们有以下Podfile: 插件’cocoapods-binary’ 平台:ios,“ 12.0” use_frameworks! […]

设置一个新的Xcode项目– Sarah Lichter

设置一个新的Xcode项目 任何新项目的入门都可能令人生畏。 我坚信,项目设置通常可能只是因为人们不习惯这样做而成为进入的障碍。 我是来帮助消除这一障碍的。 在本教程中,我们将使用CocoaPods设置一个新的iOS项目。 我们还将添加以下测试框架:Quick,Nimble和XCTest-Gherkin。 现在,我们并不真正在乎应用程序是什么。 我们只关心我们可以建立一个具有依赖关系的新项目,并且该应用程序将编译并运行。 创建一个新项目: 打开Xcode。 您会看到一个欢迎屏幕。 选择以下内容: —创建一个新的Xcode项目 —单视图应用 选择一个产品名称。 为了本教程的缘故,我们将使用FirstApp作为名称。 您可能还需要填写其他空白。 选中包含单元测试和ui测试的框。 点击“完成”,然后选择保存应用的位置。 然后,您将进入以下视图: 安装CocoaPods: 我们将使用CocoaPods进行依赖性管理。 如果您使用Ruby开发,则会发现使用CocoaPods类似于使用Gemfiles进行依赖管理。 如此之多,我们将从创建Gemfile开始。 在终端中,转到项目的根目录,然后执行bundle init 。 通过执行ls验证是否已创建Gemfile。 您应该在项目的根目录中看到它。 在gemfile中添加CocoaPods。 还可以随时从生成文件时删除注释。 在rubygems.org上找到CocoaPods的宝石,然后抓住安装线。 您的gemfile现在应如下所示: 来源“ https://rubygems.org” 宝石’cocoapods’,’〜> 1.4′ 返回终端,并通过bundle install gem。 您应该看到类似于以下的输出: Bundle complete! 1 Gemfile dependency, 30 gems now installed Bundle complete! 1 Gemfile dependency, […]

在iOS应用中管理机密

几乎所有iOS应用程序都需要私有值,例如API密钥,机密和密码。 其中一些可能需要在源代码中使用,以设置第三方SDK或后端API。 在构建过程中或使用开发人员工具时可能需要一些秘密,例如与Apple Developer帐户进行通信。 将秘密包含到应用程序中的简单方法包括:将值直接放入代码中,将值放入构建脚本中或将其保存在Info.plist文件中。 不幸的是,这些方法意味着这些秘密被提交给源代码控制,并且任何对代码有访问权限的人都可以看到。 此外,可以从已编译的应用程序中提取添加到应用程序捆绑包中的脚本和plist文件。 我们将研究一些更安全的方式来管理iOS项目中的机密,以便从代码中访问它们。 值得注意的是,由于应用程序在用户设备上“泛滥成灾”,因此几乎不可能将应用程序中的任何内容100%保密。 一个好的方法是针对这种情况实施适当的保护级别,例如,银行应用程序应该比待办事项列表应用程序具有更高的安全级别。 本文是对我之前撰写的关于在iOS应用程序中保持Git机密的主题的文章的改进和扩展。 出于各种原因,对于开放源代码项目和封闭源代码项目,都必须使秘密不受源代码控制。 通过将秘密提交给源代码控制,您将与所有对存储库具有读访问权限的用户(包括将来会访问任何权限的用户)共享这些值。 您可能拥有需要访问项目但不一定使用所有机密的用户。 用户签出存储库后,他们将获得存储在本地计算机上的所有机密的副本。 如果您的源代码控制系统受到威胁,则不仅将获得源代码,还将获得所有密码和其他机密。 Git允许我们包含一个.gitignore文件,在这里我们可以列出应保留的文件(或表达式)。 如果我们的应用程序需要这些文件,则每个开发人员只需创建这些文件并添加任何必需的值即可。 我们可以在Git中包含这些文件的模板版本,或在文档中提供所需指南,包括在需要时提供秘密的人员的联系方式。 大多数iOS开发人员都知道,许多iOS项目使用Cocoapods作为依赖项管理器。 Cocoapods包括一个插件系统,该插件系统可将其进程连接到其中。 cocoapods-keys是可用于安全管理应用程序秘密的此类插件之一。 cocoapods密钥不仅可以将秘密信息排除在项目源之外,还可以将其安全地保存在系统钥匙串中。 安装或更新Pod后,会要求开发人员提供每个尚未存储的值的密钥。 生成一个Objective-C类,其中包含键的混淆版本及其值。 由于此类是通过运行Cocoapods构建的,因此Pods/CocoaPodsKeys目录可以添加到.gitignore 。 该插件具有许多优点: 它要求为每个密钥提供一个值,而无需记录所需的秘密。 这使得每个开发人员都很容易配置他们的项目环境。 源文件已生成,因此可以很容易地使其不受源代码控制。 机密会在生成的源中加密,以防止从应用程序二进制文件中提取密钥。 可以从Swift和Objective-C源码中使用它。 通过读取钥匙串,我们可以根据需要访问构建脚本中的秘密。 我们可以在使用cocoapods-keys的不同项目之间共享密钥。 将cocoapods-keys集成到我们的项目中非常简单,并且首先将插件包含到我们的Podfile 。 在下一次运行pod install ,将要求我们输入上面列出的每个键的值。 配置完所有密钥后,插件将生成一个源文件,可以在我们的代码中引用该源文件来读取密钥。 对于像后端API秘密这样的值,我们可能希望它在调试和发布时有所不同,我们可以同时包含两个密钥,然后在运行时读取另一个密钥。 显然,有许多不同的处理方式,具体取决于我们拥有的用例。 因此,我们在这里不讨论所有可能的选项,而仅根据应用程序是否在调试配置中构建而着眼于切换。 如果您在项目中使用Cocoapods,我建议您使用Cocoapods键来解决其他问题,因为它是一种安全且易于使用的方法。 许多项目不使用Cocoapods,或者我们可能不想使用插件,因此我们也可以考虑自己实施解决方案。 机密将被传递到构建过程中,在此过程中它们将作为环境变量提供。 然后,我们可以读取这些变量并使用它们来生成源文件,该文件将使我们的代码可以访问我们的秘密值。 我们可以在不同的环境中使用不同的值 Xcode提供了可以链接到特定构建配置的xcconfig文件,以便加载其中指定的设置。 可以为每个构建配置指定一个xcconfig文件,从而使我们可以为每个环境使用不同的值。 我们可能希望将我们的应用程序指向发布应用程序的生产API,但将其指向调试应用程序的测试后端。 请注意,如果某个特定的应用程序不需要依赖于构建配置的不同值,则可以使用Shell脚本而不是xcconfig文件,并在以后将其源文件输入到我们的最终构建阶段。 我们首先创建xcconfig文件的示例版本。 如果我们将这些文件放在诸如BuildConfig之类的目录中,它将使它们与其他项目文件分开。 […]

SwiftLint最简单的配置

一种基于Swift样式指南的,用于实施Swift样式和约定的工具。 SwiftLint帮助我们在项目中编写了更好的代码,对于我们和团队来说,我们不必担心同一行或下一行中的方括号,查看具有1000行或强制展开变量的控制器。 这篇文章是关于使用自定义规则和cocoapods以最简单的方式将其放入项目中的工具的。 首先… 在Mac中安装homebrew:https://brew.sh /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 2.在终端中安装SwiftLint: brew install swiftlint 3.在您的Podfile中添加SwiftLint: Pod’SwiftLint’ 如果您的项目中没有cocoapods,我强烈建议您签出:https://medium.com/@AyunasCode/how-to-install-cocoapods-52c523f73a63 4.让我们去Xcode! 4.1在打开项目的情况下,转到导航器。 4.2单击您的项目名称。 4.3单击目标,然后转到构建阶段选项卡。 4.4单击+图标 4.5添加脚本阶段: “ $ {PODS_ROOT} / SwiftLint / swiftlint” 5.好的,清理并构建您的项目,然后…屏住呼吸,如果您是人类,您的项目现在会有大量的警告甚至错误(强制展开),但是请耐心等待! Podfile的框架创建了很多这样的内容,在警告和空格之间加上了括号和单词之间的空格。 保持冷静和.swiftlint.yml 该文件将控制规则以及swiftlint框架的透明性,从而解决几乎所有不需要的警告。 还记得Brew安装吗? 我们是本教程的第一步吗? 你需要这个朋友 6.在项目中添加一个名为.swiftlint.yml的新空文件。 如果.swiftlint.yml没有正确缩进,则此命令将不起作用,并且终端将显示所有先前的警告 在框架中进行此更改后,您所需要做的就是在Xcode中构建项目,并修复所有与Swift Style Guide无关的内容。 我希望本文能帮助开发人员加快此配置过程,并帮助您处理编写代码的方式。 将来对您和您的团队都更好!

使用Swift开发iOS的前提条件

从哪里开始。 Mac + Xcode +终端+ Cocoapods。 注意: 您是否首先阅读了这一重要文章? 从Appstore下载Xcode 您需要在Mac上的某处编写代码,以告诉iPhone / iPad您正在编写应用程序以执行操作,而某处是Xcode(Apple的IDE(集成开发环境))。 Xcode是一套软件开发工具。 基本上,您将获得以下好处: 编写可提供有关您的应用程序操作说明的源代码。 因为像iPhone或iPad这样的机器只能执行对人类没有意义的“低级”机器代码(分别为1和0),所以在其之上存在多种抽象以使其易于理解。 在这种情况下,最高级的是“高级”语言Swift(用于编写您的源代码)。 “构建”您的应用程序:Xcode然后将您的源代码一直转换(编译)为机器代码,以便您的应用程序(程序)可以由设备执行。 借助“断点”(用于暂停程序的执行)和“控制台日志”(用于在程序执行期间显示信息)来调试和查找错误或错误,从而调试代码。 终奌站 在Mac上浏览或启动应用程序时,通常通过图形用户界面进行操作: 单击应用程序图标,在Finder中查找文件夹等。 另一种方法是使用终端,这是一个命令行工具。 您可以使用特定语言直接为Mac输入指令(在这种情况下为Bash)。 要提示终端,请按⌘+空格并输入“ Terminal”,然后按Enter / Return键。 我们将使用它来安装Cocoapods。 椰子足 这是Swift(和Objective-C)应用程序项目的依赖项管理器。 在几乎每个超基础项目中,您都需要安装一些“库/框架”,因为您不想每次都重新发明轮子,而是自己编写应用程序应该做的所有事情。 库和框架基本上是做某些事情的源代码。 这些是开发人员多年来开发的通用功能,这些开发人员将其工作开源并将其用于许多应用程序,例如在iPhone / iPad设备上下载和缓存图片(即存储图片)。 Cocoapods提供了一种干净而简单的方法来管理所有这些“依赖项”(即“库/框架”)。 转到终端并粘贴以下Bash命令sudo gem install cocoapods 。 sudo使您成为“超级用户”,可以调用任何命令:在这里,我们install了名为cocoapods的Ruby gem 。 gem是用Ruby(另一种编程语言)编写的程序。 包起来 打开Xcode并在iOS选项卡中创建一个新的单视图应用程序。 填写产品名称信息,然后选择您的组织名称和标识符。 确保您的组织标识符的格式为“ com.yourorganization.yourproductname”。 Apple通过这种方式将您的应用程序标识为具有唯一的捆绑包ID(在此处有更多信息)的唯一方式(更好地保持连贯性)。 将项目保存在桌面上。 创建项目后,立即关闭Xcode并返回到终端。 输入cd […]

创建和上传自己的CocoaPods

在上一篇名为“构建自己的框架”的后续文章中,本文将重点介绍如何使用该框架创建自己的CocoaPod并将其上传到GitHub。 但是首先,CocoaPod到底是什么? 用他们自己的话说: “ CocoaPods是Swift和Objective-C Cocoa项目的依赖项管理器。 它拥有超过24,000个库,并在超过120万个应用程序中使用。 CocoaPods可以帮助您优雅地扩展项目。” 说得好! 👏🏼👏🏼 CocoaPods通过提供一种上载,共享和管理第三方库的方式,使开发人员彼此之间的协作更加容易。 这意味着您可以完全使用其他开发人员已经编写的代码,而不必完全从头开始构建应用程序。 此外,CocoaPods的开源性质不仅使创建应用程序的过程效率大大提高,而且还创建了一个环境,邀请世界各地的开发人员共享任何内容,从微妙的图形到整个旨在促进Web导航和API请求的框架。 有几个网站重点介绍了新的和流行的CocoaPods,但是对于今天的帖子,我们将重点放在将我们自己的代码上传到GitHub上,以供每个人检查和实现! 正如我所说,虽然某些CocoaPods具有革命性并改变了我们与项目交互的方式,但其中许多都是简单的功能,它们以最小的努力增加了一些才能。 鉴于我精通的编码专业知识和充裕的时间,我将创建一个接近疏忽的代码的CocoaPod,以期说明流程并激发更多才华横溢的编码人员为CocoaPods网络做出贡献! 创建CocoaPod: 首先使用您希望捆绑的所有相关文件创建一个Xcode框架。 (如果您忘记了这样做的方法,也许我建议这个有用的资源😉) 接下来,将其保存在可靠的位置(也许是装满未来CocoaPods的“图书馆”文件夹)。 之后,您可以关闭Xcode 在终端中,找到文件并输入以下代码行5o创建一个新的Podfile 4.仔细检查Podfile的内容。 在我们的示例中,默认情况下应考虑所有内容,但是,如果项目中还有任何其他Pod,则必须在此处列出。 例如,如果要实现Alamofire,则可以在“继承! “ search_paths”。 否则,您可以简单地保存并关闭Podfile。 5.接下来,在终端中输入代码“ pod install”。 这将创建一个XCworkspace并安装文件。 大! 我们已经在计算机上拥有自己的Pod。 还不错吧? 接下来,我们将其连接到GitHub并将其代码疯狂发布! 🐯 将您的CocoaPod上载到GitHub 首先登录GitHub.com上的帐户 通过单击屏幕右上方的➕图标来创建新存储库。 您可以为其指定名称,描述,并决定是否向公众开放。 您还应该选择一个许可证。 最常见的是开放源代码的MIT(可以在这个恰当命名的网站上找到有关选择许可证的更多信息)。 接下来,我们将创建一个.podspec文件。 在终端的CocoaPod文件夹中输入以下代码行: podSpec文件中要求提供很多信息,但至少您的文件应包含您Pod的名称,版本,首页(其Github地址),其来源(通常是带有.git附件的Github地址),许可证以及所有其他依赖项的摘要和列表(例如,如果您使用的是Alamofire)。 使用语义版本控制显示版本,其中每个数字代表发行版本。 从技术上讲,第一个应写为0.1.0(代表重大更改。较小更改。补丁编辑)。 最后,您需要以正确的格式‘name.h,m’列出您的源文件。 如果其中任何一项在远程造成混淆,那么CocoaPods就它们在podSpec文件中寻找的内容而言非常有用。 还在我这儿? 挂在那里,您几乎成功了! 是时候画龙点睛了-推动IT生存!!! 再一次在Terminal中找到项目的文件夹,然后输入以下几行代码: 瞧! […]