我有一个cocoapod的项目(我们称之为"Main"),它与另一个cocoapod有一个依赖关系(我们称之为"Util").
我可以通过"pod'Util'"在Main的Podfile中添加Util,并通过"s.dependency'Util'"将其指定为podspec中的依赖项.
只要至少写入其中一个,我的pod测试项目运行正常(如果没有podspec中的依赖项,运行"pod lib lint"命令会返回错误)
在Podfile中指定pod可以让我更精确地了解我希望版本的准确程度,甚至允许我使用:head作为目标.但是,依赖性似乎更加有限,需要标签.
我想知道这两种方法之间的区别,以及当一个pod依赖于另一个pod时是否有好的做法(特别是因为我最终想要将Main用作其他项目的pod)
我正在努力使我的图书馆作为CocoaPod工作,并希望任何协助指出我正确的方向.
我以前从来没有制作过Pod,我觉得我已经把所有东西都弄好了,这可行......如果它是一个只有未编译的.h/ .m/ .swift文件的简单pod ,但是,我的库包含一个编译过的.a文件,一个静态库,我的库使用.
我在Xcode中的项目被设置为将Objective-C库编译成.a库.如果我在Xcode中编译它,它生成这个文件完全没有问题,但是,当我尝试lint podspec时,我得到链接器错误,似乎与我试图链接到的静态库有关.
#
# Be sure to run `pod lib lint NAME.podspec' to ensure this is a
# valid spec and remove all comments before submitting the spec.
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = "SQLConnect"
s.version = "1.2.0"
s.summary = "Connects apps to SQL Server"
s.description = <<-DESC
A library for connecting Objective-C & Swift apps …Run Code Online (Sandbox Code Playgroud) 试图lint一个本地 pod规范
$ pod spec lint MyPod.podspec
Run Code Online (Sandbox Code Playgroud)
我越来越
[!]尝试读取不存在的文件夹
/private/tmp/CocoaPods/Lint/Pods/MyPod.
我检查/private/tmp/CocoaPods/Lint/Pods/了我确实找不到我的podspec的地方,
但我找到了它/private/tmp/CocoaPods/Lint/Pods/Local Podspecs/
是什么导致这种情况和/或我如何调试?
有关信息,这是我的pod规格
Pod::Spec.new do |s|
s.name = "MyPod"
s.version = "0.0.1"
s.summary = "A pretty cool pod"
s.author = { "Me" => "me@home.net" }
s.license = 'MIT'
s.homepage = "http://www.mypod.net"
s.source = { :path => "." }
s.source_files = '*.{h,m}'
s.platform = :ios, '6.0'
s.requires_arc = true
end
Run Code Online (Sandbox Code Playgroud)
:path似乎造成了麻烦,:git有效
我使用Cocoapods来集成我的工作区.我在项目中使用了大约45个pod.我想归因于所有许可证标题,并且想知道有没有一种方法可以获取并连接所有标题或者我应该手动执行吗?
我制作了一个框架,我想通过CocoaPods分发.
我不确定我是不是做了些蠢事.我在基本目录中包含了一个完整的.framework文件夹,我希望它能成为我的pod的源代码.当我运行"pod lib lint"时,一切似乎都很好但是当我运行"pod spec lint"时,我得到:
- ERROR | [iOS] The `vendored_frameworks` pattern did not match any file.
Run Code Online (Sandbox Code Playgroud)
我在查看stackoverflow之后尝试添加preserve_paths,但这似乎无法解决我的问题.通过阅读cocoapods文档,vendored_frameworks是"随Pod一起提供的框架包的路径",所以我认为在这里使用它似乎很好.
这是我的podspec文件:
Pod::Spec.new do |s|
s.name = "X"
s.version = "1.0"
s.summary = "Summary"
s.description = "Description here"
s.homepage = "http://www.valid_homepage.com/"
s.license = { :type => "Commercial", :text => "See https://www.license_here" }
s.author = { "Author" => "author@website.com" }
s.source = { :http => "https://storage.googleapis.com/path/to/file" }
s.social_media_url = 'https://twitter.com/handle'
s.platform = :ios, '7.0'
s.requires_arc = true
s.preserve_paths = 'X.framework'
s.vendored_frameworks = 'X.framework' …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的项目中使用libFLAC编译到iOS,使用CocoaPod作为依赖安装.
问题是如果我使用CocoaPod版本0.39,工作区创建就好了,但是如果我使用CocoaPod版本1.0则会出现构建错误(有关错误的详细信息,请参阅下文)
我正在使用项目https://github.com/evature/flac-ios
我的podfile包含:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/evature/Eva-Pods.git'
platform :ios, '8.0'
use_frameworks!
target 'ExampleApp' do
pod 'JSQMessagesViewController', '~>7.0'
pod 'libFLAC', '~>1.3.0'
pod 'RXPromise', '~>0.13.0'
end
Run Code Online (Sandbox Code Playgroud)
编译错误是一个缺少的头文件(在libFlac源内) -
#include "private/bitmath.h" <<'private/bitmath.h'未找到
此头文件确实存在于Pods项目下 Pods/libFlac/CorePrivateHeaders
libFlac podspec位于https://github.com/evature/Eva-Pods/blob/master/libFLAC/1.3.1/libFLAC.podspec
我正在使用Xcode版本7.3.1
我猜责任是版本0.39和版本1.0之间的一些重大变化,但是看看更改日志和Podspec我没有找到突破性的变化.
我想再次创建我的第一个pod.我很久以前就试过这个,1年前我记得,那个时候我也有类似的错误.
以下代码显示了我的project.podspec文件的样子,我不知道我在这里想念的是什么,CocoaPods只是字面上对我大吼大叫,说podspec文件中有一些问题.
Pod::Spec.new do |s|
s.name = 'MyProject'
s.version = '0.1.0'
s.platform = :ios, '9.0'
s.license = 'MIT'
s.summary = 'Something Blah Blah'
s.homepage = 'https://github.com/alvinvarghese/MyProject'
s.author = { 'Alvin Varghese' => 'my email' }
s.source = { :git => 'https://github.com/alvinvarghese/MyProject.git', :tag => s.version.to_s }
s.description = 'Blah Blah Blah BlahBlah BlahBlah BlahBlah BlahBlah Blah Blah Blah' \
'Blah Blah'
s.frameworks = 'UIKit', 'Foundation'
s.social_media_url = 'https://twitter.com/aalvinv'
s.ios.deployment_target = '9.0'
# s.resource_bundles = { …Run Code Online (Sandbox Code Playgroud) 我正处于一些CocoaPods项目的中间,试图构建我自己的私有Pod,可通过我的主项目中的"pod install"访问.这是一个Swift项目,一切似乎都在工作,阅读相应的教程等等......
我必须说,我一直在使用的CocoaPods了一段时间,但我一种新的建设我自己的荚并将其存储在我的私人空间gitlab.
这似乎是我的问题:显然我不知道如何在我的gitlab空间正确存储我最近创建的pod.另外,运行"pod install"无法获取我的podspec文件.
我现在拥有的是一个带有Podfile的主项目.在这个项目中,我有我的pod的下一个简单定义(2个公共(SpkinKit和MBProgressHUD)和1个私有,'commons'):我的Podfile就是这个:
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
target 'MyBaseApp' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyBaseApp
pod 'SpinKit'
pod 'MBProgressHUD'
pod 'commons', :path => 'ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git'
end
Run Code Online (Sandbox Code Playgroud)
如果我输入"pod install --verbose",我会得到以下输出:
Fetching external sources
-> Fetching podspec for `commons` from `ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git`
[!] No podspec found for `commons` in `ssh://git@internal_ip_numeric_address_of_my_gitlab_machine:2222/myusername/ios_commons_pod.git`
Run Code Online (Sandbox Code Playgroud)
此崩溃不允许pod下载,此过程在此处停止.
什么似乎是错的?据我所知,我在gitlab路径路径中有一个podspec文件.看看这个截图: …
我创建了一个通过 cocoapods 发送的供应框架。现在我想将 dsym 文件也与框架一起发送,以便我的崩溃可以显示在控制台中并包含在存档的 ipa 的 dsym 中。
我尝试在框架中复制 dsym,但在存档构建时抛出“bit_strip 错误”。
提前致谢
我们在 Xcode 项目中使用新的构建系统和 Cocoapods 1.7.5。我们的项目(我们称之为 Y)实际上是一个开发 pod,但我们还编写了一些代码来创建应用程序演示(您知道,为了使构建更快、迭代更快)。这些演示代码(AppDelegate.swift、启动任务等)不包含在开发容器中。剩余的大约 90% 的源代码和资源文件(例如 i18n 字符串和图像资源)被打包到开发 pod 中,供另一个项目(我们称之为 X)使用。
在开发过程中,大部分更改发生在 Y 的 dev pod 部分,因此我们需要确保 X 执行时包含所有更改pod install。
最近我们遇到一个问题:
\nerror: Multiple commands produce \'/Users/x/Library/Developer/Xcode/DerivedData/Y-cawteybtitmeiafweribgqzkuhnr/Build/Products/Debug-iphoneos/Y.app/Assets.car\':\n1) Target \'Y\' (project \'Y\') has compile command with input \'/Users/name/DEV/workspace/Y/SupportFiles/Assets.xcassets\'\n2) That command depends on command in Target \'Y\' (project \'Y\'): script phase \xe2\x80\x9c[CP] Copy Pods Resources\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n经过几个小时的multiple commands produce assets.car谷歌搜索,我们终于看到了一个合理的解释:
\n复制捆绑资源的 *.xcassets --> Assets.car
\n[CP] 复制 …