需求:
**我的需求是:**我需要在一个电脑上管理两个cocoapods账号,一个用于公司SDK的发布,一个用于自己平时测试用。
**我的问题是:**当我创建第二个账号成功后(第二个账号的邮箱必须和第一个不同),第一个账号的信息就查不到了。
问题分析:
CocoaPods 默认只支持一个活跃 session,CocoaPods默认是使用**
~/.netrc
文件来存储认证token。当我创建新的账号时,新的token就会被写入到~/.netrc
**文件中,但是会覆盖第一个账号的token,如何需要同时在一台电脑上存在两个及以上的CocoaPods账号就需要备份每一个token,我们需要使用不同的方式来管理多个账号的凭证。
解决方案:
由于CocoaPods本身并不支持多账号切换,我们需要手动管理多个账号的token。
以下是几种方法:
方法1:使用环境变量
CocoaPods可以通过环境变量**
COCOAPODS_TRUNK_TOKEN
**来指定当前会话使用的token。这样我们可以为不同的账号设置不同的token,并在使用前设置相应的环境变量。
1. 注册CocoaPods账号,并保存注册时得到的token(注册时会发送邮件,邮件中有验证链接,点击验证后,token才有效)
注意:每个账号的token是唯一的,并且长期有效(除非在网页上重置)
# 注册第一个账号
pod trunk register your-first-email@example.com "First Name" --description='MacBook Pro'
# 验证第一个账号邮箱:去邮箱点击邮件中的验证链接。未验证的 token 无法执行 pod trunk 命令
# 查看当前登录状态
# 如果报错 [!] Authentication token is invalid or unverified
# 表示当前 token 无效或未验证
pod trunk me
# 验证成功后备份当前账号凭证
cp ~/.netrc ~/.netrc_account1
# 注册第二个账号
pod trunk register your-second-email@example.com "Second Name" --description='MacBook Pro'
# 验证第二个账号邮箱
# 备份第二个账号凭证
cp ~/.netrc ~/.netrc_account2
到此根目录就存在三个token文件了:.netrc .netrc_account1 .netrc_account2
2. 使用环境变量管理会话
# 创建账号1的环境变量
echo "export COCOAPODS_TRUNK_TOKEN_ACCOUNT1='your-token-here'" >> ~/.bash_profile
# 创建账号2的环境变量
echo "export COCOAPODS_TRUNK_TOKEN_ACCOUNT2='your-other-token-here'" >> ~/.bash_profile
# 刷新环境
source ~/.bash_profile
# 使用特定账号
function pod-account1() {
export COCOAPODS_TRUNK_TOKEN=$COCOAPODS_TRUNK_TOKEN_ACCOUNT1
pod "$@"
}
function pod-account2() {
export COCOAPODS_TRUNK_TOKEN=$COCOAPODS_TRUNK_TOKEN_ACCOUNT2
pod "$@"
}
3. 创建切换脚本( cocoapods-switch.sh),移动脚本到PATH
脚本内容:
if [ "$1" = "account1" ]; then
# 切换到账号1
cp ~/.netrc_account1 ~/.netrc
echo "Switched to CocoaPods account: account1"
elif [ "$1" = "account2" ]; then
# 切换到账号2
cp ~/.netrc_account2 ~/.netrc
echo "Switched to CocoaPods account: account2"
else
echo "Usage: cocoapods-switch [account1|account2]"
fi
在终端运行:
# 创建切换脚本
nano cocoapods-switch.sh
# 粘贴上面的脚本内容
# 设置权限
chmod +x cocoapods-switch.sh
# 移动脚本到 PATH
sudo mv cocoapods-switch.sh /usr/local/bin/
4. 多账号操作流程
# 切换到账号1
cocoapods-switch account1
# 验证账号1状态,可以看到账号1的信息
pod trunk me
# 发布到账号1的仓库
pod trunk push MyPod.podspec
# 切换到账号2
cocoapods-switch account2
# 验证账号2状态,可以看到账号2的信息
pod trunk me
# 发布到账号2的仓库
pod trunk push OtherPod.podspec
方法2:使用脚本文件
前面的账号创建和备份Token是相同的就不重复了。
创建和使用 pod-switch 脚本
终端运行:
# 使用 nano 编辑器创建文件
nano pod-switch
复制并粘贴以下内容:
# 检查参数数量
if [ $# -ne 1 ]; then
echo "Usage: pod-switch [account1 | account2]"
echo "Current account:"
pod trunk me | grep "Email" || echo "No active account"
exit 1
fi
# 根据参数切换账号
if [ "$1" = "account1" ]; then
cp ~/.netrc_ account1 ~/.netrc 2>/dev/null
if [ $? -eq 0 ]; then
echo "✅ Switched to Account1 CocoaPods account"
pod trunk me | grep "Email"
else
echo "❌ Error: Account1 credentials not found"
echo "Run 'cp ~/.netrc ~/.netrc_ account1' to backup your account1"
fi
elif [ "$1" = "account2" ]; then
cp ~/.netrc_ account2 ~/.netrc 2>/dev/null
if [ $? -eq 0 ]; then
echo "✅ Switched to account2 CocoaPods account"
pod trunk me | grep "Email"
else
echo "❌ Error: account2 credentials not found"
echo "Run 'cp ~/.netrc ~/.netrc_ account2' to backup your account2"
fi
else
echo "❌ Invalid account name. Use 'account1' or 'account2'"
exit 1
fi
保存并退出编辑器
按 Ctrl + O 保存文件
按 Enter 确认文件名
按 Ctrl + X 退出 nano
设置执行权限:chmod +x pod-switch
移动到可执行路径
sudo mv pod-switch /usr/local/bin/
验证脚本安装
which pod-switch
应该输出: /usr/local/bin/pod-switch
使用 pod-switch 脚本
# 切换到主账号
pod-switch account1
# 验证账号
pod trunk me
# 切换到第二个账号
pod-switch account2
# 验证账号
pod trunk me
测试验证: