从现有Xcode项目制作CocoaPod

n8ghc7c1  于 2023-01-21  发布在  其他
关注(0)|答案(3)|浏览(185)

我一直在尝试破解这个问题,但到目前为止还没有成功。我有一个Xcode Swift项目,它的github存储库用于源代码控制。我想用这个项目创建一个新的CocoaPod。
我已经看过了CocoaPods的文档,但是到目前为止还没有任何工作,我现在真的很困惑,有人能写一下我需要从我现有的Xcode项目中制作新的pod的步骤吗?Xcode项目已经有一个Github存储库链接到它。
先谢了!

3lxsmp7m

3lxsmp7m1#

取自Cocoapods documentation

$ pod spec create YourProject
$ edit YourProject.podspec

然后在编辑器中将s.source_files = "Classes", "Classes/**/*.{h,m}"替换为

s.source_files = "Classes/**/*.{swift}"

然后运行,直到您通过所有测试。

$ pod spec lint YourProject.podspec

基本上就是这样。
您可以通过创建一个新的演示应用程序并按照Anbu.Karthik中的9个步骤在真实的生活中测试此Podspec。
在创建的podfile中添加类似以下内容:

pod 'YourProject', :path => '/Users/you/work/YourProject'

路径应该指向包含podspec文件的目录。再次运行pod install

7kjnsjlb

7kjnsjlb2#

从现有xcode项目创建Cocoapod的简单步骤

  • 在你的git账户上创建一个仓库(仓库名,查看README,在许可证下选择MIT)。
  • 复制你的存储库的url.打开终端并运行以下命令.
    • git clone复制了您的资源库url**
  • 现在将Xcode项目复制到Mac上的cloned repository文件夹中。
    • git add-u添加所有文件(如果未添加,请使用:git添加文件路径/文件夹)**
    • git commit-m "您的自定义消息"**
    • git推送原始主机**
  • 创建一个新的发布版本以访问git仓库或运行以下命令
    • git标签1.0.0**
    • git推送--标记**
  • 首先,我们需要确保您已安装CocoaPods并准备好在终端中使用。运行以下命令:
    • sudo gem安装cocopods----前**
    • 创建Podspec**
  • 所有的Pod都有一个podspec文件。一个podspec,顾名思义,定义了Pod的规格!现在让我们创建一个,在终端上运行以下命令
    • 触摸播客名称.播客规范**
  • 添加和修改. podspec文件后,在终端上按以下命令验证. podspec文件
    • pod库lint**
  • 一旦你成功地验证它没有错误运行以下命令来注册你和建立cocopod分别
    • pod中继寄存器**
    • Pod中继推送PodName. podspec**

如果一切顺利,你会在终端上看到这个
🚀 PodName(1.0.0)已成功发布
📅 2月5日凌晨2点32分
🌎 https://cocoapods.org/pods/PodName
👍 告诉你的朋友!
是的!!!!!恭喜你有了你的pod链接。在你想用的地方使用它。

sxpgvts3

sxpgvts33#

您可以使用https://github.com/CocoaPods/Xcodeproj(Cocoapods附带的,所以如果您使用后者,就已经有了前者)来解析XCode项目/工作区,例如

  • 从项目中获取所需目标
  • 获取目标编译中包含的所有文件
  • 打印或写入文件(甚至直接写入Podspec)
  • 更新Podspec,使spec.source_files包含所有这些文件

由于Podspec是一个Ruby脚本,您甚至可以将此过程集成到Podspec本身中,以便只维护单个XCode项目目标源文件,并让Podspec根据该源文件进行自我更新。

require 'xcodeproj'
project = Xcodeproj::Project.open('MySuperProject.xcodeproj')
target = project.targets.select { |target| target.name == 'MyTarget1' }.first

def self.relative_file_paths(build_phase)
  folder_path_length = __dir__.length + 1  # add '/' to the end
  paths = build_phase.files_references.map{ |f| f.real_path.to_s[folder_path_length..-1] }
  puts build_phase, paths
  return paths
end

Pod::Spec.new do |s|
  s.name = 'MySuperProject'
  s.version = '1.0'
  s.authors = 'My team'
  s.license = 'My License'
  s.homepage = 'github.com:me/MySuperProject.git'
  s.source = { :git => 'github.me/MySuperProject.git' }
  s.summary = 'My Super Project'

  headers = (self.relative_file_paths target.headers_build_phase) + ['include/SomeHeader.h']
  s.source_files = (self.relative_file_paths target.source_build_phase) + headers
  s.public_header_files = headers
end

相关问题