iOS 开发 如何将自己写的framework的sdk上传到github并能用cocopods search搜索到

50 阅读6分钟

要将自己开发的iOS framework SDK上传到GitHub并使其能够通过CocoaPods搜索到,可以按照以下详细步骤操作:

  1. 创建GitHub仓库
  • 首先,在GitHub上注册一个账号并登录。
  • 创建一个新的仓库,例如命名为YourSDKName。确保在创建时勾选“Public”选项,以便其他人可以访问。
  1. 准备项目文件
  • 在本地创建一个文件夹,用于存放你的SDK项目。例如,命名为YourSDKName。
  • 在文件夹内创建一个Frameworks文件夹,将编译好的.framework文件放入该文件夹中。
  • 如果需要,可以同时创建一个Demo项目,用于展示如何在实际项目中集成你的SDK。
  1. 编写.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仓库名称和版本保持一致。
  1. 提交代码到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/

git push https://github\_pat\_11BCU3BFY0RmTqdYpo6LwN\_7aC8l4fdUJzkxdDHQ9Rh18vxTwq5zAU51atfNqBJN89BVTUNDIYedHecZKS@github.com/**AndyJackCheung**/sdkcocoa.git/

  1. **-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

  1. **-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来获取版本信息。
  1. 注册并上传到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,然后重新上传。
  1. 验证上传结果
  • 在本地终端运行以下命令,搜索你的SDK:

pod search YourSDKName

  • 如果显示结果,说明你的SDK已成功上传到CocoaPods。
  1. 在项目中使用你的SDK
  • 在Podfile中添加以下依赖:

source 'github.com/CocoaPods/S…'

pod 'YourSDKName', '\~> 1.0.0'

  • 运行以下命令安装依赖:

pod install

  • 通过这种方式,你的SDK就可以在其他项目中使用了。

总结:通过以上步骤,你可以将自定义的iOS framework SDK上传到GitHub,并使其通过CocoaPods搜索到。关键步骤包括创建仓库、编写.podspec文件、提交代码、注册CocoaPods账号并上传。完成后,其他开发者可以通过CocoaPods轻松集成和使用你的SDK。