使用 Swift 构建 Cocoapod 并依赖于 Objective-C 框架

2024-03-23

我知道这里已经有一些关于这个主题的问题,但很少有人接受答案,而且我认为我没有找到与我完全相同的问题。

我正在构建一个 Swift pod,在我的代码中我依赖于 Google Maps iOS SDK,它捆绑为.framework文件。该项目在 Xcode 中构建正常,但是我在将库发布到 Cocoapods 时遇到问题。

我设法有一个Podspec几乎使用验证的文件pod lib lint命令。但是,现在我已经添加了Google-Maps-iOS-SDKpod 作为依赖项Podspec文件,它失败并显示以下消息:

$ pod lib lint

[!]“Pods”目标具有传递依赖关系,其中包括静态 二进制文件: (/private/var/folders/n2/qyjfpk6n7zz_mngtwswlmsy00000gn/T/CocoaPods/Lint/Pods/Google-Maps-iOS-SDK/GoogleMaps.framework)

$

这是预期的吗?为什么我无法将 Google Maps iOS SDK 添加为我自己的基于 Swift 的 pod 中的 pod 引用?

这是Podspec:

Pod::Spec.new do |s|
    s.name                  = '(name)'
    s.version               = '1.0.0'
    s.summary               = '(summary)'
    s.platforms             = { :ios => '8.0', :osx => '10.10' }
    s.ios.deployment_target = '8.0'
    s.osx.deployment_target = '10.10'
    s.license               = { :type => 'BSD', :file => 'LICENSE' }
    s.source_files          = 'Sources/*.{h,swift}', '*.framework'
    s.source                = { :git => "https://github.com/(Github repo).git", :tag => "1.0.0" }
    s.requires_arc          = true
    s.frameworks            = "Foundation", "CoreLocation"
    s.author                = { 'Romain L' => '(email)' }
    s.dependency 'Google-Maps-iOS-SDK'
end

如果我不包含 Google Maps iOS SDK 作为依赖项,那么pod lib lint桥接标头失败,并抱怨找不到<GoogleMaps/GoogleMaps.h>(文件未找到)。

我被卡住了,我不知道这是 Cocoapods 0.36(仍处于测试版)的错误还是我做错了什么。

感谢您的帮助!


我终于在 SO 上找到了另一个处理类似问题的线程:通过 CocoaPods 添加 iOS 版 Google 地图的 Swift 项目中的链接器错误 https://stackoverflow.com/questions/28405079/linker-errors-in-a-swift-project-with-google-maps-for-ios-added-via-cocoapods.

这些错误似乎是由于错误的 Podspec 文件(在 Google Maps iOS SDK 端)和 Cocoapods 0.36 Beta 中的错误共同造成的。

实际上可以通过使用 @fz. 为 Google 地图修改的 Podspec 文件来解决这些问题:https://stackoverflow.com/a/28471830/145997 https://stackoverflow.com/a/28471830/145997。另一篇文章也对了解如何vendored_frameworks设置工作于Podspec is: http://codereaper.com/blog/2014/creating-a-pod-with-crashreporter/ http://codereaper.com/blog/2014/creating-a-pod-with-crashreporter/.

因此,要在 Pod 项目中正确导入 Google Maps iOS SDK,首先使用以下命令Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
# altered version of Google's Podspec
pod 'Google-Maps-iOS-SDK', :podspec => "https://raw.githubusercontent.com/Reflejo/GoogleMapsPodspec/master/Google-Maps-iOS-SDK.podspec.json"
use_frameworks! # don't forget this!

我现在可以从我的 Swift 代码中引用 Google Maps 类,只需执行以下操作import GoogleMaps。并且,为了分发 Pod,我的最后Podspec现在类似于以下内容:

Pod::Spec.new do |s|
    s.name                  = 'MyPod'
    s.version               = '1.0.0'

    s.homepage              = "https://github.com/..."
    s.summary               = '(pod summary)'
    #s.screenshot            = ""

    s.author                = { 'Romain L' => '(email)' }
    s.license               = { :type => 'BSD', :file => 'LICENSE' }
    s.social_media_url      = "https://twitter.com/_RomainL"
    s.platforms             = { :ios => '8.0' }
    s.ios.deployment_target = '8.0'

    s.source_files          = 'MyCode/*.{h,swift}'
    s.module_name           = 'MyPod'
    s.source                = { :git => "https://github.com/....git", :tag => "1.0.0" }
    s.requires_arc          = true
    s.libraries             = "c++", "icucore", "z" # required for GoogleMaps.framework
    s.frameworks            = "AVFoundation", "CoreData", "CoreLocation", "CoreText", "Foundation", "GLKit", "ImageIO", "OpenGLES", "QuartzCore", "SystemConfiguration", "GoogleMaps" # required for GoogleMaps.framework
    s.vendored_frameworks   = "Dependencies/GoogleMaps.framework" # Put the Google-provided framework in that subfolder of your Pod project
    #s.dependency              'Google-Maps-iOS-SDK' # Careful! this will cause errors if enabled!
end

我现在可以在 Xcode 中启动一个新的 iOS 应用程序并使用以下命令Podfile链接到我自己的 pod,它本身引用了 Google Maps iOS SDK:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'MyPod'
use_frameworks! # do not forget this!

不是那么容易,但毕竟是可行的!希望谷歌尽快修复它Podspec不过,Swift 开发的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Swift 构建 Cocoapod 并依赖于 Objective-C 框架 的相关文章

  • 从 Firebase 观察者代码块中的函数返回数据 swift

    我是 firebase 的新手 我想知道是否有任何可能的方法来返回观察者块中的数据 我有课ApiManager NSObject在这个类中 我想创建所有的 firebase 函数 该函数将从数据库返回某种数据 这是我在这门课中的职责之一 f
  • 等到使用removePendingNotificationRequests删除来自UNUserNotificationCenter的本地通知 ios 10 swift 3

    使用新的本地通知UNUserNotificationCenter 我尝试删除带有一些标识符的通知 UNUserNotificationCenter current removePendingNotificationRequests with
  • 来自 Popover 的 UIActionSheet 和 iOS8 GM

    有人在尝试从弹出窗口显示 UIActionSheet 时收到此消息吗 您的应用程序呈现了 UIAlertController 样式的 UIAlertControllerStyleActionSheet 具有此样式的 UIAlertContr
  • Phonegap 之类的 Mac App Store 平台? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用phonegap 在iOS 本机应用程序中运行我的HTML JS 代码 有没有办法在 Mac
  • Swift 返回类型说明

    我看到一个 Swift 函数写如下 func calculation imageRef CGImage gt red UInt green UInt blue UInt 我需要知道上面函数的返回类型是什么 我无法将它与任何已知类型联系起来
  • 使用 UIActivityViewController 分享视频

    我正在尝试使用默认的苹果共享屏幕将视频分享到 Twitter 和 Facebook 等 我已经让它与图像一起使用 但我不知道如何更改它以与视频一起使用 提前致谢 这是我用来分享照片的代码 IBAction shareButtonPresse
  • 如何让iOS 7下的UISwitch不采用其后面视图的背景颜色?

    关闭时看起来像这样 虽然我更喜欢灰色背景 我真的必须使用 UIImageView 吗 以下是我更改 iOS7 UISwitch 的填充颜色的方法 首先您需要导入 QuartzCore import
  • 在 iOS 框架中嵌入框架

    我有一个包含另一个目标 框架 的项目 它是主项目的依赖项 该框架需要它自己的框架 因此我使用 carthage 添加了它们 该项目在模拟器上编译并运行良好 但是在物理设备上运行时出现以下错误 dyld Library not loaded
  • iOS:无法让蓝牙管理器工作

    警告 我知道私有框架不会在 App Store 中流行 我尝试使用 BluetoothManager 框架来让我 1 检查设备上是否启用了蓝牙 2 如果未启用 则将其打开 我可以按照找到的说明成功加载蓝牙管理器here https stac
  • iOS:如何创建并绘制(并保存)大于屏幕的图像?

    我们正在创建一个 iOS 照片应用程序 为此 我们必须创建动态大小的图像 最大约为 2500x1600 像素 创建此图像后 我们希望以相当快的速度在大图像之上绘制较小的图像 正如我们所看到的 问题在于不可能获得大于屏幕分辨率的上下文 该调用
  • 如何快速使用 CoreLocation?

    我尝试过将 CoreLocation 与我的 Swift 应用程序一起使用 但没有运气 我有以下非常简单的代码 我已经链接了 CoreLocation 库 import UIKit import CoreLocation UIApplica
  • 使用 Swift 获取 UITableViewCell 中 UITextField 的 indexPath

    因此 我正在构建一个详细视图控制器应用程序 它显示一个包含两部分单元格的表格 标签和文本字段 我正在尝试检索文本字段值并将其添加到数组中 我尝试使用 textField superview superview 技术 但没有成功 func t
  • iOS 9 的 UIAlertView 的替代方案?

    UAlertView在 iOS 9 及更高版本中已弃用 有什么替代方案吗 UIAlertView new UIAlertView alloc initWithTitle Success message Your InApp Purchase
  • 来自 facebook 的高分辨率图像

    这就是我获取相册和相册中的图片的方式 let connectionPhotos FBSDKGraphRequestConnection let requestPhotos FBSDKGraphRequest graphPath String
  • 为 MoonAPNS 创建 p12 文件时卡住了

    我在创建 p12 证书时遇到一些问题 我之前创建了一个带有推送通知的应用程序 效果很好 应用程序获取用户设备 ID 并将其保存到数据库中 我已将代码添加到我的新应用程序中 并进行了与新应用程序一起使用的修改 从日志来看 它的工作方式似乎与我
  • 将视图控制器推送到 UINavigationController 中

    我有一个带有导航控制器的选项卡视图控制器 在第一个选项卡项中 我单击视图中的按钮 弹出一个带有动画的视图 是 然后 当该视图完成后 我点击另一个按钮将其关闭 喜欢 self dismissViewControllerAnimated NO
  • 在 Swift 中将进程标准输出重定向到 Apple 系统日志工具

    我正在为 macOS 构建一个启动子进程的 Swift 应用程序 该子进程将有用的信息记录到stdout 我在 Xcode 控制台中看到它 我现在想要实现的是重定向子流程stdout到Apple Log Facility 以便我们可以在部署
  • SpriteKit 中的攻击按钮

    我对 Xcode 有点陌生 一直在为我的班级制作 2d 游戏 我已经有一段时间遇到按钮问题了 我刚刚找到了为什么我的跳跃按钮不起作用的解决方案 但我还有一个攻击按钮 我设置了代码 使按钮显示在屏幕上并在按下时更改其图像 但是 我不知道要放入
  • 如何使用 GPUImageHarrisCornerDetectionFilter 获取角点

    我正在尝试使用以下方法从静态图像中获取角点GPUImageHarrisCornerDetectionFilter 我查看了项目中的示例代码 查看了文档 还查看了这篇文章 内容大致相同 GPUImage 现有 UIImage 上的 Harri
  • iOS 所需的设备功能自动对焦相机

    我有一个 iOS 应用程序 我在其中设置Required Device Capabilities配置设置需要两者still camera and auto focus camera因为它需要在具有更好的自动对焦相机传感器的新一代设备上运行

随机推荐

  • Ruby 和修改 Float 实例的 self

    我想更改浮点实例的自身值 我有以下方法 class Float def round by precision self 10 precision round to f 10 precision end end 我想添加 round by 方
  • c++0x_warning.h:31:2:错误:

    我正在尝试创建一个文件并收到此错误 我是新手 有人能帮我一下吗 usr include c 4 6 bits c 0x warning h 32 2 error error This file requires compiler and l
  • Cocos2d 3.0中如何获取winSize

    我在Cocos2d 1 0和Cocos2d 2 0中使用了以下代码 但在Cocos2d 3 0中似乎找不到 CGSize s CCDirector sharedDirector winSize 如何在Cocos2d 3 0中获取屏幕尺寸 您
  • 如何使用 Unity 将基于 2D 数组的图块实例化到平台游戏中?

    我正在构建一个非常简单的平台游戏 使用 2D 数组来构建基于它的地图 我想要两个简单的目标 但目前还没有找到答案 确保相机为 16 9 并且我的场景将 100 显示在其中 像在数组中一样构建 2D 平台图块集 我的环境 Unity 5 5
  • C# 编码指南 [重复]

    这个问题在这里已经有答案了 可能的重复 C 编码标准 最佳实践 https stackoverflow com questions 14967 c coding standard best practices 您推荐哪些最流行 最合理且最详
  • 增加 gradle 的超时时间以获得 Maven 依赖

    我正在尝试通过以下方式从 Maven 获取 jar 依赖项grails 3 1 5 gradle依赖解析 如何增加 gradle 获取 Maven 依赖项所需的超时时间 当然 我已经看到依赖项需要更长的时间才能下载 但是我如何配置 grad
  • 从 flutter 应用程序中的 fireStore 获取带有索引的列表

    我正在尝试从 firestore 获取列表 但我遇到了索引问题 这是列表上普通项目的结构 每个对象都包含一个项目列表 class RestaurantFoodList final String id final String title L
  • 如何创建带有背景图像的倾斜透明形状?

    I want to achieve something like this it has a background image https imgur com cSde7ff I only able to make a slanted di
  • 由于 Javadoc 错误而无法构建 Maven 项目?

    有没有人遇到过类似的 Maven 错误 如下所示 由于以下错误 我无法构建我的项目 在我开始编写代码之前 一切都工作正常 我什至没有处理下面定义的接口 它似乎与 Javadoc 有关 ERROR Failed to execute goal
  • Trinidad/ADF Faces、文件上传、EOFException

    我在 Tomcat 8 5 服务器上的 web xml version 3 1 中使用 JSF 2 3 Mojarra 2 3 3 Trinidad 2 2 1 及其文件上传组件 tr inputFile 我收到以下异常 并且没有有效的上传
  • Winforms 窗体间切换

    我现在用的是winform 我有主表单 form1 还有一个打开 form2 的按钮 当我打开 form2 时 我希望 form1 消失 当用户单击 form2 上的 x 按钮时 我希望它关闭并返回到 form1 我不想使用模态窗口 pri
  • 进程资源不受 setrlimit 限制

    我编写了一个简单的程序 将其数据大小限制为 65Kb 并验证相同的情况 我分配了超过 65Kb 的虚拟内存 从逻辑上讲 如果我执行了所有正确的操作 如下所示 那么 malloc 调用应该会失败 不是吗 include
  • gcc(windows + MinGW) 是否在 inttypes.h 中定义了 SCNd8、SCNu8?

    include
  • 顺风旋转木马

    我想使用 Tailwind CSS 制作一个轮播 但我无法将一些纯 CSS 转换为顺风 CSS 如果无法将纯 CSS 转换为 tailwind CSS 请告诉我如何在我的 React 项目中添加该 CSS 我在用REACT 请帮我解决这个问
  • 如何在 Laravel 4 中构建带有子应用程序的平台?

    我需要开发几个具有共同功能和流程的网站 唯一会发生巨大变化的是CSS 甚至HTML也会通用 我在 Laravel 4 中组装这个结构时遇到了麻烦 因为我仍然是该框架的初学者 我需要有一个所有 子项目 都将继承的 超级项目 我需要能够在特定的
  • 如何通过Java执行cmd命令

    我正在尝试通过 Java 执行命令行参数 例如 Execute command String command cmd c start cmd exe Process child Runtime getRuntime exec command
  • WooCommerce 显示自定义列

    我想在 WooCommerce 后端显示一个附加列 在订单概述中 该列应包含我定义的自定义字段 交货日期 这个怎么做 如果有人仍然需要它 有关如何在 Woocommerce 订单列表中添加新列的说明 无需取消设置默认列 只需将其添加到您的f
  • 针对低内存使用情况,康威生命游戏的有效实现是什么?

    我正在寻找一种快速且节省内存的方法来实现康威的生命游戏 限制 96x128 板 大约 2kB 可用 RAM 和 52MHz 处理器 请参阅此处的技术规格 http www getinpulse com features http www g
  • 在Java中生成随机唯一的双精度值

    我需要一个 64 位浮点随机数的集合 并且它们应该是不同的 是否有为此的库例程 或者我应该手动搜索重复项 实际上 让数字不接近比一些非常小的常数 更重要 图书馆也有这样的例程吗 您可以使用streams为了那个原因 double array
  • 使用 Swift 构建 Cocoapod 并依赖于 Objective-C 框架

    我知道这里已经有一些关于这个主题的问题 但很少有人接受答案 而且我认为我没有找到与我完全相同的问题 我正在构建一个 Swift pod 在我的代码中我依赖于 Google Maps iOS SDK 它捆绑为 framework文件 该项目在