pod search 搜索不到库(明明已经push成功了,本地的仓库中也有)

pod search 搜索不到库的问题


.最近打算把常用的一些Class,做成私有库的形式,于是乎就有了下面的一系列问题.

明明已经push成功了,本地的仓库中也有,远程的仓库中也有,为什么就是search不到呢?

.关于怎么使用github或者自己的git服务器作为存储自己pod映射文件的仓库(Spec Repo),我就不再多多赘述了,下面会有简单的说明.主要写其中遇到的一些问题.

按照下面的顺序来排查,每个人可能只需1步或者2步就能解决问题,希望对你有用.

1.简单介绍自己的私有仓库容器怎样与相关的Pods工程建立连接.

  • 1.首先把你个人的容器关联到本机(添加pod spec仓库关联):

      pod repo add "仓库名" ****.git (仓库的远程地址)
    
  • 2.推送相应的Pods工程到 你到的私有仓库容器中:

      pod repo push "仓库名" "需要建立连接的podspec文件名".podspec --allow-warnings --verbose --use-libraries
    
  • 3.上面做完之后,如果没有问题,你已经把你的Pods工程推送到你的私有仓库(容器中了),但是重要的问题来了,我push也是成功的,为啥search的时候就是search不到呢?


2.经过多方面的尝试,把可能的原因注意排除

1.pod repo push 的时候确保是成功的,到自己的私有仓库中能看到相应的podspec映射关联,此原因排除

2.本机的cocoapods文件缓存问题,于是开始相关缓存清理
  • 1.删除master repo,重新pod update,相当漫长,然而没有什么作用.

  • 2.删除搜索索引,rm ~/Library/Caches/CocoaPods/search_index.json,然后再pod search ,依然没有什么作用,此时的我有点不知所措了.后面还再继续摸索中

3.难道是我的cocoapods版本问题?
  • 1.换了公司的mac mini,然后配置下cocoapods,完成之后,添加对应的仓库容器,然后pod search,此时mini是可以搜索到的

  • 2.mini的Pod版本如下图:

4.更新Cocoapods版本
    1. Cocoapods 版本更新到1.9.3 之后,pod search还是无法搜索到的问题
    1. 删除自己的私有仓库(pod repo remove ***),
    1. 重新添加到本机中 pod repo add “仓库名” ****.git (仓库的远程地址)
    1. 删除搜索索引,rm ~/Library/Caches/CocoaPods/search_index.json
    1. 重新pod search ,此时终于出现了目标,也不枉折腾了这一两天.

附上一篇详细制作私有库的文章

<think>好的,我需要帮助用户修改CocoaPods脚本,将include文件夹中的.h和.m文件包含到私有中,并确保通过pod安装时能正确拉取。首先,我需要了解CocoaPods的目录结构和podspec文件的配置。 用户提到现有的脚本可能需要调整。podspec文件中通常会有s.source_files来指定源码文件。用户希望将include文件夹中的文件包含进去,可能需要修改source_files的路径。例如,如果include在的根目录下,可能需要设置s.source_files = 'include/**/*.{h,m}',不过这样可能只包含头文件和实现文件,但用户可能希望保持原有结构同时添加include目录。 另外,CocoaPods默认会将头文件作为public,但.m文件通常不会公开。用户可能希望将.h文件作为public headers,而.m文件可能作为私有或者源码。不过,如果是静态,可能需要将.m文件编译进去。这时候需要检查s.public_header_files是否正确指向include中的.h文件。例如,s.public_header_files = 'include/**/*.h',同时确保s.source_files包括.h和.m。 另外,可能需要设置头文件的搜索路径,以便在编译时能找到include中的头文件。这可以通过s.xcconfig中的HEADER_SEARCH_PATHS来设置,比如'$(PODS_ROOT)/Headers/Public/YourLib'或者具体路径。 用户还提到要确保文件被正确推送。在podspec中,除了source_files,还需要确认s.preserve_paths是否包含include目录,这样在安装时会保留目录结构。例如,s.preserve_paths = 'include/**/*'。 此外,用户可能在使用pod package打包时,需要确保--library参数正确包含这些文件。可能需要检查打包命令是否处理了include目录,或者在podspec中添加resource_bundles,但资源包通常用于非代码文件,所以可能不太合适。这里还是应该用source_files和public_header_files。 最后,测试是否成功,需要执行pod install并检查Pods目录下是否包含include文件夹及其中的文件,同时确认编译时能正确引用头文件,没有报错。</think>根据需求调整CocoaPods脚本的步骤如下: ### 步骤一:调整目录结构 将.h和.m文件统一放入名为`include`的文件夹中,确保目录结构为: ``` YourLib/ include/ ClassA.h ClassA.m SubDir/ ClassB.h ClassB.m YourLib.podspec ``` ### 步骤二:修改podspec配置 在`.podspec`文件中修改以下关键配置: ```ruby s.source_files = 'include/**/*.{h,m}', 'Classes/**/*.{h,m}' # 保留原有Classes目录,新增include目录 s.public_header_files = 'include/**/*.h' # 暴露头文件 s.preserve_paths = 'include/**/*' # 保留目录结构 ``` ### 步骤三:验证头文件搜索路径 在Xcode项目中确保头文件搜索路径包含: ``` "${PODS_ROOT}/Headers/Public/YourLib/include" ``` 可通过在podspec中添加配置实现: ```ruby s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(PODS_ROOT)/YourLib/include/**' } ``` ### 步骤四:更新Git仓库并打标签 1. 提交修改后的文件: ```bash git add include/ YourLib.podspec git commit -m "添加include目录" ``` 2. 更新版本号并打标签(假设新版本号为1.0.1): ```bash git tag -a 1.0.1 -m "v1.0.1" git push origin 1.0.1 ``` ### 步骤五:验证本地配置 在Example目录执行更新操作: ```bash cd Example pod install cd .. ``` ### 步骤六:打包静态(如需) 使用以下命令确保包含include目录: ```bash pod package YourLib.podspec --library --force ``` ### 引用验证方式 安装后检查Pods目录结构: ``` Pods/ YourLib/ include/ ClassA.h ClassA.m SubDir/ ClassB.h ClassB.m ``` ### 关键配置说明 - **source_files**:使用Glob模式匹配所有源码文件[^1] - **public_header_files**:控制公开头文件的可见性[^3] - **preserve_paths**:保留原始目录结构防止扁平化[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值