注意:这是一个更抽象和简化的问题子集.
随着Touch Frameworks的加入,Extensions和Apple Watch Xcode 6项目和工作区变得越来越复杂.
如果你将CocoaPods添加到这个组合中,事情开始变得几乎无法管理.
如何构建具有以下目标和依赖性的Xcode项目/工作区?(假设:我正在为所有组件使用Git,我使用CocoaPods用于所有第三方代码,我正在使用Xcode 6).
如您所见,这是一个复杂的结构,包括几个CocoaPods实例.有关如何解决任何或所有这些问题的任何建议都会有所帮助.
(我的计划是写下我自己的一些想法,然后综合其他人的答案,这无疑将是一份活文件).
更新到CocoaPods 0.36.x后,我无法将导入添加到我的Bridging-Header.h文件中.我得到"找不到DBSphereView.h文件".
该文件确实存在于:
"Pods/DBSphereTagCloud/DBSphereView.h"
"Headers/public/DBSphereTagCloud/DBSphereView.h"
"Headers/private/DBSphereTagCloud/DBSphereView.h"
Run Code Online (Sandbox Code Playgroud)
我的桥文件:
#ifndef Loan_Bridging_Header_h
#define Loan_Bridging_Header_h
#import "DBSphereView.h"
#endif
Run Code Online (Sandbox Code Playgroud)
我可以使用框架.我参考了一个众所周知的框架(Alamofire),它很棒!
我的podfile:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'DBSphereTagCloud', '~> 1.0'
pod 'Alamofire', '~> 1.1'
Run Code Online (Sandbox Code Playgroud)
在更新之前,我没有导入头文件的问题.
在将CocoaPods更新为0.36.x后,如何在Bridging-Header.h中引用头文件?
谢谢!
编辑:
我还尝试根据cocoapods.org的"Get Started"示例创建一个单独的项目,但没有成功.使用框架后,我似乎无法在我的桥接头文件中引用头文件.我一定错过了一些细节?
安装cocoapods并添加pod "SwiftCarousel"到pod文件并取消注释平台之后:ios,'9.0'我得到了这个错误
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
我该怎么办?
mohammed.elias$ pod install
Analyzing dependencies
Downloading dependencies
Installing SwiftCarousel (0.8.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `scrollView.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
[!] The `scrollViewTests [Debug]` target overrides the `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` build setting defined in `Pods/Target Support Files/Pods-scrollViewTests/Pods-scrollViewTests.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- …Run Code Online (Sandbox Code Playgroud) 所以我在CocoaPods的 Xcode项目中使用了Venmo/Synx,它完全搞砸了所有东西.
我能够修复Manifest.lock和Podfile.lock错误,但现在我收到此错误:
无法打开文件"Pods.debug.xcconfig",因为没有此类文件.(/ Users/user/GitHub/xxxxxx/Pods/Pods/Target Support Files/Pods/Pods.debug.xcconfig)
如您所见,路径不正确,因为没有Pods/Pods目录(有一个额外的pod).
我怎样才能解决这个问题?我只添加PODS_ROOT了用户定义的变量,因为它修复了我的Podfile和Manifest.lock文件.
任何帮助将非常感激!
编辑:
添加PODS_ROOT后,我在运行时得到它pod install.
[!] The `Project [Debug]` target overrides the `PODS_ROOT` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
Run Code Online (Sandbox Code Playgroud) 我创建一个新的可可触摸框架(MyFramework.framework),这将对Alamofire的依赖.这个框架将用Swift编写.作为测试,我开始了一个新的Cocoa Touch Framework项目:
File > New > Project > Framework & Library > Cocoa Touch Framework
Run Code Online (Sandbox Code Playgroud)
然后,在我执行的终端中:
pod init
Run Code Online (Sandbox Code Playgroud)
在这个项目目录下.在新创建的Podfile中,我添加了以下内容:
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!
pod 'Alamofire', '~> 3.0'
Run Code Online (Sandbox Code Playgroud)
再次,在终端我执行:
pod install
Run Code Online (Sandbox Code Playgroud)
并开始编码.
在单视图项目中使用MyFramework.framework产品之前,一切似乎都很好.当我尝试运行该项目时,我遇到以下问题:
dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我认为Cocoa Touch Framework项目本身就是动态的,因此会包含所有依赖项.
任何人都可以告诉我为什么会发生这种情况以及我如何能够解决这个问题?这是CocoaPods的问题还是我错过了什么?
我是Stack Overflow的菜鸟,所以如果您需要我提供更多信息,请告诉我.
谢谢!
当尝试pod trunk push按照标题中提到的将cocoapod框架的更新推送到repo时,我收到以下错误:
[!]身份验证令牌无效或未经验证.使用发送的电子邮件进行验证或注册新会话.
我以前更新了cocoapod,如何验证我的电子邮件或会话?
编辑:有时我也得到错误: [!] You need to register a session first.
我的Pod文件中有一个库列表.我决定在Pod文件中添加新的.但我想保留以前的所有图书馆没有更新,只需安装(添加)这个库
pod 'JSAnimatedImagesView', '~> 1.0.0'
Run Code Online (Sandbox Code Playgroud)
所以pod update并将pod install所有库更新到更新的版本,但我不想只是安装它们pod 'JSAnimatedImagesView', '~> 1.0.0'
跑完后pod install,我收到一条警告:
[!] 您的项目没有明确指定 CocoaPods 主规范存储库。由于 CDN 现在被用作默认设置,您可以通过
pod repo remove master.要取消此警告,请添加
warn_for_unused_master_specs_repo => false到您的 Podfile。
为什么我收到这个警告?以前,我可以在pod install没有任何警告的情况下运行。
如果有帮助,这是另一个细节:我无法sudo gem install用于安装/升级 CocoaPods,所以我改用了以下命令:
sudo gem install -n /usr/local/bin cocoapods
Run Code Online (Sandbox Code Playgroud) 我有一台新 MacBook,正在尝试安装一些 Pod。我首先sudo gem install cocoapods在 root 上执行,然后pod install在我需要 pod 的目录中执行。遇到这个错误,不知道出了什么问题。
来自崩溃报告:
进程:ruby [5444]路径:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby 标识符:ruby 版本:145.100.1 代码类型:ARM-64(本机)父级进程:zsh [5282] 负责人:终端 [5005] 用户 ID:501
日期/时间:2021-09-27 21:24:20.779 +0200 操作系统版本:macOS 11.6 (20G165) 报告版本:12 匿名 UUID:--D950-78ED-2DF378C6BA5B
睡眠/唤醒 UUID:-FE18-47F9-9A4EF2935C96
自启动以来的唤醒时间:29000 秒 自唤醒以来的时间:1900 秒
系统完整性保护:已启用
崩溃线程:0 调度队列:com.apple.main-thread
异常类型:EXC_BAD_INSTRUCTION (SIGABRT) 异常代码:0x0000000000000001、0x0000000000000000 异常注释:EXC_CORPSE_NOTIFY
应用程序特定信息:调用 dyld3 模式 abort()。
x
x
x
x
外部修改摘要: 其他进程针对此进程进行的调用:task_for_pid: 0 thread_create: 0 thread_set_state: 0 此进程进行的调用:task_for_pid: 0 thread_create: 0 thread_set_state: 0 本机上所有进程进行的调用: task_for_pid: 0 thread_create: 0 thread_set_state: 0
VM 区域摘要:库的只读部分:总计=574.8M 驻留=0K(0%) swapped_out_or_unallocated=574.8M(100%) …
它是什么意思,我该如何解决它:
pod install
/Library/Ruby/Site/2.0.0/rubygems.rb:250:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) (Gem::GemNotFoundException)
from /Library/Ruby/Site/2.0.0/rubygems.rb:278:in `activate_bin_path'
from /usr/local/bin/pod:22:in `<main>'
Run Code Online (Sandbox Code Playgroud)