私有GitHub Swift SDK发布至CocoaPods遇访问权限问题求助
解决方案:私有仓库SDK发布到CocoaPods Trunk的正确方式
是的,你必须通过**编译生成二进制归档(.xcframework)**的方式发布,因为CocoaPods Trunk无法访问私有GitHub仓库的源码。你提到的Kameleoon就是采用这种二进制发布模式,所以用户能通过pod引入但看不到仓库源码。
具体步骤:
1. 编译生成跨架构的.xcframework
针对iOS设备和模拟器分别归档,再合并为xcframework(推荐这种方式,支持Xcode的架构切片):
# 归档iOS设备版本 xcodebuild archive -scheme YourSDKName -destination "generic/platform=iOS" -archivePath ./build/ios.xcarchive SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES # 归档iOS模拟器版本 xcodebuild archive -scheme YourSDKName -destination "generic/platform=iOS Simulator" -archivePath ./build/iossim.xcarchive SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES # 合并为xcframework xcodebuild -create-xcframework -framework ./build/ios.xcarchive/Products/Library/Frameworks/YourSDKName.framework -framework ./build/iossim.xcarchive/Products/Library/Frameworks/YourSDKName.framework -output ./YourSDKName.xcframework
注意:
BUILD_LIBRARY_FOR_DISTRIBUTION=YES必须添加,确保Swift ABI稳定,避免其他项目引入时出现兼容性问题。
2. 修改podspec文件适配二进制发布
移除原podspec中指向私有仓库的source、source_files等源码相关配置,改为引用本地的xcframework:
Pod::Spec.new do |s| s.name = "YourClient" s.version = "1.0.0" s.summary = "你的SDK功能概述" s.homepage = "https://github.com/your-org/your-repo" # 可保留作为主页,Trunk不会验证源码访问 s.license = { :type => "MIT", :file => "LICENSE" } s.author = { "你的名字" => "your@email.com" } s.swift_version = "5.0" s.platform = :ios, "13.0" # 核心:指定二进制框架路径 s.vendored_frameworks = "YourSDKName.xcframework" # 若SDK包含资源文件,添加以下配置 # s.resources = "Resources/**/*" # 声明SDK依赖的第三方库(如有) # s.dependency "Alamofire", "~> 5.8" end
3. 验证podspec
确保xcframework文件和podspec在同一目录下,执行验证命令:
pod lib lint YourClient.podspec --verbose
如果有警告或错误,根据提示调整(比如依赖缺失、版本不兼容等)。
4. 发布到Trunk
验证通过后,执行推送命令:
pod trunk push YourClient.podspec
此时Trunk只会读取本地的xcframework文件,不需要访问你的私有GitHub仓库,因此不会再出现URL不可访问的错误。
关键说明:
- 二进制发布后,其他开发者通过pod引入的是编译好的框架,无法查看你的源码,符合私有仓库的需求。
- 后续版本更新时,只需重新编译对应版本的xcframework,修改podspec的版本号,重复验证和推送步骤即可。
内容的提问来源于stack exchange,提问作者tamtoum1987
相关产品推荐
相关产品推荐

