要将自己开发的iOS framework SDK上传到GitHub并使其能够通过CocoaPods搜索到,可以按照以下详细步骤操作:
- 创建GitHub仓库
- 首先,在GitHub上注册一个账号并登录。
- 创建一个新的仓库,例如命名为YourSDKName。确保在创建时勾选“Public”选项,以便其他人可以访问。
- 准备项目文件
- 在本地创建一个文件夹,用于存放你的SDK项目。例如,命名为YourSDKName。
- 在文件夹内创建一个Frameworks文件夹,将编译好的.framework文件放入该文件夹中。
- 如果需要,可以同时创建一个Demo项目,用于展示如何在实际项目中集成你的SDK。
- 编写.podspec文件
-
在项目根目录下运行以下命令,生成.podspec文件:
pod spec create YourSDKName
-
使用文本编辑器(如Xcode或Atom)打开生成的.podspec文件,并根据需要进行修改。以下是一个示例配置:
Pod::Spec.new do |spec|
spec.name = "YourSDKName"
spec.version = "1.0.0"
spec.license = "MIT"
spec.homepage = "github.com/YourUsernam…"
spec.author = "Your Name"
spec.summary = "Your SDK description"
spec.ios.deployment_target = "9.0"
spec.source = { :git => "github.com/YourUsernam…", :tag => "v#{spec.version}" }
spec.frameworks = "YourSDKFramework"
spec.ios.vendored_frameworks = "Frameworks/YourSDKFramework.framework"
spec.dependency "AFNetworking", "3.0.4"
spec.dependency "MBProgressHUD", "0.9.2"
spec.dependency "MJExtension", "3.0.16"
spec.xcconfig = { "HEADER search paths" => "$(PODS_HEADER_SEARCH_PATHS)" }
end
- 注意:.podspec文件中的spec.name 和spec.version需与你的GitHub仓库名称和版本保持一致。
- 提交代码到GitHub
-
在本地文件夹中执行以下命令,将项目添加到Git仓库:
git init .
git add .
git commit -m "Initial commit"
-
将本地仓库与GitHub仓库关联:
git remote add origin github.com/YourUsernam…
亦可重新配置远程仓库url,但前提是要删除现有的远程仓库配置:
git remote remove origin
git remote add origin github.com/AndyJackChe…
-
· 推送代码到GitHub:
git push -u origin master
这条指令后便的 master 是分支名称,如果是默认的main分支,可改为main,如下:
git push -u origin main
报错1:fatal: unable to access 'github.com/AndyJackChe…': Empty reply from server
解决办法:取消HTTP和HTTPS代理设置:
git config --global --unset http.proxy
git config --global --unset https.proxy
报错2:fatal: unable to access 'github.com/AndyJackChe…': Failed to connect to github.com port 443 after 75014 ms: Couldn't connect to server
解决办法:取消HTTP和HTTPS代理设置:
git config --global --unset http.proxy
git config --global --unset https.proxy
报错3:remote: Support for password authentication was removed on August 13, 2021.
remote: Please see docs.github.com/get-started… for information on currently recommended modes of authentication.
fatal: Authentication failed for 'github.com/AndyJackChe…'
或者:
git@github.com: Permission denied (publickey).
解决办法:使用个人访问令牌(Personal Access Token, PAT)或其他认证方式
-1、生成个人访问令牌(PAT):
- 访问GitHub的设置页面:github.com/settings/to…
- 点击“Generate new token”按钮。
- 选择合适的权限范围,例如repo权限用于仓库操作。
- 点击“Generate token”按钮,生成令牌后请妥善保存。
-2、 使用个人访问令牌进行认证:
-
在命令行中,当Git提示输入用户名和密码时,输入你的GitHub用户名作为用户名,然后将生成的个人访问令牌作为密码输入。
-
或者,你可以直接在Git URL中包含令牌,例如:
git push https://<your_token>@github.com//.git/
例如:
git push https://ghp\_iRrLkXRzJnSVoYbK6jz6oYiXU5wO6g3DjUNc@github.com/Clairedandan/git\_demo.git/
- **-3、**配置Git使用凭证管理器:
-
为了方便,可以配置Git使用操作系统的凭证管理器来存储你的个人访问令牌。
-
在Windows上,可以使用wincred或manager-core:
git config --global credential.helper wincred
-
在macOS上,可以使用osxkeychain:
git config --global credential.helper osxkeychain
-
在Linux上,可以使用libsecret:
git config --global credential.helper libsecret
- **-4、**删除旧的凭证:
- 如果之前使用过密码认证,可能需要删除旧的凭证以避免冲突。
- 在Windows上,可以使用git credential-manager reject命令。
- 在macOS上,可以使用git credential-osxkeychain erase命令。
- 在Linux上,可以手动删除\~/.git-credentials文件中的相关条目。
报错4:remote: Permission to AndyJackCheung/sdkcocoa.git denied to AndyJackCheung.
fatal: unable to access 'github.com/AndyJackChe…': The requested URL returned error: 403
解决办法:
-1、检查用户信息配置:
git config --global user.name "AndyJackCheung"
git config --global user.email “283151189@qq.com"
-2、检查URL格式:确认远程仓库的URL是否正确。可以使用以下命令查看和修改:
git remote -v
git remote set-url origin github.com/AndyJackChe…
-3、切换到SSH访问:
生成SSH密钥对
ssh-keygen -t rsa -b 4096 -C "283151189@qq.com"
例如:在终端输入以上指令
andylym@192 ~ % ssh-keygen -t rsa -b 4096 -C "283151189@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/andylym/.ssh/id_rsa): /Users/andylym/.ssh/framework
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/andylym/.ssh/framework
Your public key has been saved in /Users/andylym/.ssh/framework.pub
The key fingerprint is:
SHA256:bJ6pMomaWD/9SDmkhNqXo7T3xI0tEOisCTszxVyKYhM 283151189@qq.com
The key's randomart image is:
+---[RSA 4096]----+
| |
| . |
| E. o |
| *.+ . . |
|+oO o . S |
|+B.. * B o |
|O +.=oO * |
|.B.=*+.= |
|+.o..=+.. |
+----[SHA256]-----+
andylym@192 ~ %
然后,将生成的公钥添加到github账户中:
在/Users/andylym/.ssh/文件夹里找到framework.pub,以文本打开,并复制里边的密钥,或者使用指令:
cat ~/.ssh/framework.pub
粘贴到github->Setting->”SSH and GPG keys”->”New SSH key”的key字段中,在title字段填写公钥的用途,再点击“Add SSH key”按钮完成添加
再清楚缓存的凭据:
git config --global --unset credential.helper
再修改远程仓库URL为SSH格式:
git remote set-url origin git@github.com:AndyJackCheung/sdkcocoa.git
-4、使用个人访问令牌:
git remote set-url origin https://github\_pat\_11BCU3BFY0RmTqdYpo6LwN\_7aC8l4fdUJzkxdDHQ9Rh18vxTwq5zAU51atfNqBJN89BVTUNDIYedHecZKS@github.com/AndyJackCheung/sdkcocoa.git
报错:fatal: unable to access 'github.com/AndyJackChe…': Failed to connect to github.com port 443 after 75003 ms: Couldn't connect to server
解决办法:
取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
使用SS和代替HTTPS
git remote set-url origin git@github.com:AndyJackCheung/sdkcocoa.git
-
如果需要发布Tag,可以使用:
git tag v1.0.0
git push origin v1.0.0
- 这一步非常重要,因为CocoaPods会通过Tag来获取版本信息。
- 注册并上传到CocoaPods
-
注册CocoaPods账号:
pod trunk register your_email@example.com "Your Name" --verbose
-
验证.podspec文件:
pod spec lint YourSDKName.podspec --allow-warnings
-
如果验证通过,上传到CocoaPods:
pod trunk push YourSDKName.podspec --verbose
- 如果遇到错误,可以尝试删除远程Tag,然后重新上传。
- 验证上传结果
-
在本地终端运行以下命令,搜索你的SDK:
pod search YourSDKName
- 如果显示结果,说明你的SDK已成功上传到CocoaPods。
- 在项目中使用你的SDK
-
在Podfile中添加以下依赖:
source 'github.com/CocoaPods/S…'
pod 'YourSDKName', '\~> 1.0.0'
-
运行以下命令安装依赖:
pod install
- 通过这种方式,你的SDK就可以在其他项目中使用了。
总结:通过以上步骤,你可以将自定义的iOS framework SDK上传到GitHub,并使其通过CocoaPods搜索到。关键步骤包括创建仓库、编写.podspec文件、提交代码、注册CocoaPods账号并上传。完成后,其他开发者可以通过CocoaPods轻松集成和使用你的SDK。