一台电脑管理多个cocoapods账号

需求:

**我的需求是:**我需要在一个电脑上管理两个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 [email protected] "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 [email protected] "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

保存并退出编辑器

  1. 按 Ctrl + O 保存文件

  2. 按 Enter 确认文件名

  3. 按 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

测试验证:

相关推荐
明似水2 天前
解决 Ruby Gem “rexml“ 版本不兼容问题 (CocoaPods/Firebase 相关错误)
开发语言·ruby·cocoapods
守城小轩2 天前
Chromium 136 编译指南 macOS篇:Xcode安装与配置(二)
macos·xcode·策略模式
march of Time3 天前
go在for循环中使用errgroup和channel进行并发处理
开发语言·golang·xcode
YungFan5 天前
Xcode26新特性与iOS26适配指南
ios·xcode
survivorsfyh8 天前
Xcode 16 集成 cocoapods 报错
macos·xcode·cocoapods
survivorsfyh8 天前
error: Sandbox: rsync(17136) deny(1) file-write-create
xcode·cocoapods