完整步骤:
把你需要发布到CocoaPods的代码写好。
用Xcode创建一个Framework项目,将你写好的代码拖入Framework,进行相关配置,根据需求打包Framework。
注册CocoaPods账号,检查库名是否已被占用,没有被占用就创建Podspec文件,拖入通用Framework。
创建git仓库,修改xxx.podspec配置,将代码推送到远程仓库并进行版本控制,验证Podspec文件。
验证通过,发布到 CocoaPods。
1. 创建Framework项目
1. 在Xcode中,选择File -> New -> Project
2. 选择iOS -> Framework & Library -> Framework,然后点击Next

3. 输入产品名称(例如:LanguageSet),选择语言(Objective-C或Swift),点击Next并保存。

2. 配置Framework
- 添加代码文件:将你的源代码文件拖入项目,确保在Build Phases -> Headers中设置好公开头文件(Public Headers)。

- 将需要公开的头文件拖到public:

添加第三方库
1.使用cocoapod是可以自动管理第三方库,在Link Binary With Libraries 中找到Pod_的framwork 选择Optional
2.手动添加第三方库和文件时,不要选择target
设置Build Settings:
-
Mach-O Type: 默认为Dynamic Library,也可以选择Static Library(但Framework通常指动态库)。
Mach-O Type -
Build Active Architecture Only: 设置为NO,以支持所有架构。
Build Active Architecture Only -
iOS Deployment Target: 选择你希望支持的最低iOS版本。
iOS Deployment Target Swift版本:如果是Swift项目,确保设置正确的Swift版本。
Enable Bitcode: 如果需要,设置为YES。
3. 打包Framework(支持真机和模拟器)
我们需要同时支持真机和模拟器架构(arm64, x86_64),并最终合并为一个通用Framework。
1. 分别编译真机和模拟器版本
1. 真机Release
xcodebuild archive
-scheme LanguageSet
-configuration Release
-destination "generic/platform=iOS"
-archivePath "build/LanguageSet-iOS"
SKIP_INSTALL=NO
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
2. 模拟器Release
xcodebuild archive
-scheme LanguageSet
-configuration Release
-destination "generic/platform=iOS Simulator"
-archivePath "build/LanguageSet-Simulator"
SKIP_INSTALL=NO
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
2. 合并两个Framework-打包通用Framework(支持真机+模拟器)
使用
lipo工具合并二进制文件,并复制模拟器的swiftmodule(如果有)到真机Framework中。
# 创建通用Framework目录
mkdir -p build/LanguageSet-Universal
# 复制真机Framework到通用目录
cp -R build/LanguageSet-iOS.xcarchive/Products/Library/Frameworks/LanguageSet build/LanguageSet-Universal/
# 合并二进制文件
lipo -create
build/LanguageSet-iOS.xcarchive/Products/Library/Frameworks/LanguageSet.framework/LanguageSet
build/LanguageSet-Simulator.xcarchive/Products/Library/Frameworks/LanguageSetframework/LanguageSet
-output build/LanguageSet-Universal/LanguageSet.framework/LanguageSet
# 如果使用Swift,需要合并swiftmodule
if [ -d "build/LanguageSet-Simulator.xcarchive/Products/Library/Frameworks/LanguageSet.framework/Modules/LanguageSet.swiftmodule" ]; then
cp -R build/LanguageSet-Simulator.xcarchive/Products/Library/Frameworks/LanguageSet.framework/Modules/LanguageSet.swiftmodule/* \
build/LanguageSet-Universal/LanguageSet.framework/Modules/LanguageSet.swiftmodule/
fi
将上面的合并起来:
创建一个打包脚本 build_framework.sh
#!/bin/bash
# 1. 定义基础变量
SCHEME_NAME="LanguageSet" # 替换为实际Scheme名
PROJECT_NAME="LanguageSet" # 替换为实际工程名
CONFIGURATION="Release" # 建议使用Release模式
OUTPUT_DIR="${PWD}/Output" # 输出目录
# 2. 清理旧构建
rm -rf "${OUTPUT_DIR}"
mkdir -p "${OUTPUT_DIR}"
# 3. 编译真机版本 (arm64, armv7)
xcodebuild archive \
-project "${PROJECT_NAME}.xcodeproj" \
-scheme "${SCHEME_NAME}" \
-configuration "${CONFIGURATION}" \
-sdk iphoneos \
-archivePath "${OUTPUT_DIR}/iphoneos.xcarchive" \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES # 支持多架构 [[6]]
# 4. 编译模拟器版本 (x86_64, arm64)
xcodebuild archive \
-project "${PROJECT_NAME}.xcodeproj" \
-scheme "${SCHEME_NAME}" \
-configuration "${CONFIGURATION}" \
-sdk iphonesimulator \
-archivePath "${OUTPUT_DIR}/iphonesimulator.xcarchive" \
SKIP_INSTALL=NO \
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES # M1芯片需包含arm64 [[3, 6]]
# 5. 合并为XCFramework (官方推荐方式)
xcodebuild -create-xcframework \
-framework "${OUTPUT_DIR}/iphoneos.xcarchive/Products/Library/Frameworks/${SCHEME_NAME}.framework" \
-framework "${OUTPUT_DIR}/iphonesimulator.xcarchive/Products/Library/Frameworks/${SCHEME_NAME}.framework" \
-output "${OUTPUT_DIR}/${SCHEME_NAME}.xcframework" # 生成多平台兼容包 [[2, 6, 12, 16]]
# 6. 可选:生成Fat Framework (传统合并方式)
# lipo -create \
# "${OUTPUT_DIR}/iphoneos.xcarchive/Products/Library/Frameworks/${SCHEME_NAME}.framework/${SCHEME_NAME}" \
# "${OUTPUT_DIR}/iphonesimulator.xcarchive/Products/Library/Frameworks/${SCHEME_NAME}.framework/${SCHEME_NAME}" \
# -output "${OUTPUT_DIR}/${SCHEME_NAME}.framework/${SCHEME_NAME}" # 需手动处理头文件 [[11, 15, 20]]
# 7. 打开输出目录
open "${OUTPUT_DIR}"

运行脚本
chmod +x build_framework.sh
./build_framework.sh
生成文件夹:

注册CocoaPods的Trunk
# 注册CocoaPods账号(仅首次)
pod trunk register your-email@example.com "Your Name" --description='MacBook Pro'
CocoaPods会向你提供的邮箱发送一个验证链接,点击链接完成验证。
验证CocoaPods的Trunk注册结果
pod trunk me

创建Podspec文件
pod lib create LanguageSet

生成Podspec文件夹

Example: 放demo应用
LanguageSet: /Classes主代码 /Assets图片资源文件
将之前生成的XCFramework拖入新建Podspec文件夹中的LanguageSet中

创建Git仓库

修改LanguageSet.podspec配置
Pod::Spec.new do |s|
s.name = 'LanguageSet'
s.version = '0.0.1'
s.summary = 'multilingual processing.'
s.description = <<-DESC
A few simple lines of code can handle multiple languages
DESC
s.homepage = 'https://github.com/GavinCarter1991/LanguageSet'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'gavin' => 'kindyourself@163.com' }
s.source = { :git => 'https://github.com/GavinCarter1991/LanguageSet.git', :tag => s.version.to_s }
s.ios.deployment_target = '12.0'
s.vendored_frameworks = 'LanguageSet/Classes/LanguageSet.xcframework'
# 添加模块映射
s.preserve_paths = 'LanguageSet/Classes/LanguageSet.xcframework'
# 添加资源处理排除规则
s.pod_target_xcconfig = {
'EXCLUDED_FILE_GROUP_PATTERNS' => [
'**/LanguageSet.xcframework/**/_CodeSignature/**',
'**/LanguageSet.xcframework/**/Modules/**'
]
}
# 禁用模块验证(针对 xcframework)
s.user_target_xcconfig = { 'VALIDATE_WORKSPACE' => 'NO' }
end
设置Git仓库
# 创建本地仓库
cd LanguageSet 进入文件夹
git add .
git commit -m "first commit"
# 创建远程仓库(在Gitee/GitHub上创建)
git remote add origin https://github.com/GavinCarter1991/LanguageSet.git // 关联仓库
git push -u origin main
# 添加版本标签
git tag 0.0.1
git push --tags

发布到CocoaPods
1. 首次发布
# 验证podspec
pod lib lint --allow-warnings
# 发布到CocoaPods
pod trunk push CocoaPodsDemo.podspec --allow-warnings

2. 更新版本
更新podspec中的版本号
推送新代码到你的库的 Git 仓库,创建新的Git标签(tag)
重复推送和发布的步骤



