我已经尝试了一个多星期的时间让我的自定义Pod工作。这取决于GooglePlaces和GoogleMaps Api。我想出了如何使本地Pod工作为不依赖的swift代码。但是,只要我将其中一个Google pod添加到混音中,我就会收到错误:
[!]' Pods-testPlaceSetterPod' target具有包含静态二进制文件的传递依赖项:(/ Users/alexanderbollbach/Desktop/testPlaceSetterPod/Pods/GooglePlaces/Frameworks/GooglePlaces.framework)
我的Google地图会出现同样的错误。
我查看了Cocoapods github问题部分,但所有对话都超出了我的知识水平。我能做什么?
答案 0 :(得分:0)
我遇到了同样的问题,但谷歌移动广告。经过几个小时的搜索后,简短的回答是你不能用Swift 来做。我不是Cocoapod专家,而且正如您的错误所述,Google将其SDK分发为静态二进制文件(与动态相反),这是无效的。技术推理超出了我的知识,但我做了find a post,这促使我放弃尝试
在GoogleMaps作为动态框架发布之前,您只能这样做 支持它作为库的传递依赖。但是,就像你一样 正在使用一个快速框架 - 你也不能支持它。您最好的选择是请求Google将其库发布为我担心的动态框架。
我确实提出了一个我认为尽可能好的解决方案。我没有在Podfile
中将我的项目作为Cocoapod分发,而是添加了几行以包含Google SDK并下载我想要的文件作为pod分发。
查看Installation
部分下的McAdViewController。基本上我像往常一样添加Google移动广告宣传栏,并在每次McAdViewController
或pod install
时添加了一些Ruby来下载pod update
的最新副本。
pod 'Google-Mobile-Ads-SDK', '~> 7.19'
puts "Downloading McAdViewController..."
require 'open-uri'
open('./McAdViewController.swift', 'wb') do |file|
file << open('https://raw.githubusercontent.com/kmcgill88/McAdViewController/master/McAdViewControllerExample/McAdViewController.swift').read
end
puts "Successfully downloaded McAdViewController! :)"
如果有人知道更好的方法将其改为合法的pod,我很乐意听到它!
祝你好运!