hi-client/get_team_id.sh
2025-10-13 18:08:02 +08:00

173 lines
4.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 获取 Apple Developer Team ID 的脚本
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查 Apple ID 和密码
check_credentials() {
if [ -z "$APPLE_ID" ] || [ -z "$APPLE_PASSWORD" ]; then
log_error "请先设置 APPLE_ID 和 APPLE_PASSWORD 环境变量"
log_info "运行: export APPLE_ID='your-apple-id@example.com'"
log_info "运行: export APPLE_PASSWORD='your-app-password'"
exit 1
fi
log_info "使用 Apple ID: $APPLE_ID"
}
# 方法1: 通过 xcrun altool 获取
get_team_id_altool() {
log_info "尝试通过 xcrun altool 获取 Team ID..."
local output
if output=$(xcrun altool --list-providers -u "$APPLE_ID" -p "$APPLE_PASSWORD" 2>&1); then
local team_id=$(echo "$output" | grep -o 'Team ID: [A-Z0-9]*' | head -1 | cut -d' ' -f3)
if [ -n "$team_id" ]; then
echo "$team_id"
return 0
fi
fi
return 1
}
# 方法2: 通过 xcodebuild 获取
get_team_id_xcodebuild() {
log_info "尝试通过 xcodebuild 获取 Team ID..."
# 检查是否有 Xcode 项目
if [ -f "ios/Runner.xcodeproj/project.pbxproj" ]; then
local team_id=$(grep -o 'DEVELOPMENT_TEAM = [A-Z0-9]*' ios/Runner.xcodeproj/project.pbxproj | head -1 | cut -d' ' -f3)
if [ -n "$team_id" ]; then
echo "$team_id"
return 0
fi
fi
return 1
}
# 方法3: 通过开发者证书获取
get_team_id_certificates() {
log_info "尝试通过开发者证书获取 Team ID..."
local identities=$(security find-identity -v -p codesigning 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$identities" ]; then
local team_id=$(echo "$identities" | grep -o '([A-Z0-9]*)' | head -1 | tr -d '()')
if [ -n "$team_id" ]; then
echo "$team_id"
return 0
fi
fi
return 1
}
# 方法4: 手动输入
get_team_id_manual() {
log_warning "无法自动获取 Team ID"
log_info "请手动输入您的 Team ID"
log_info "1. 登录 https://developer.apple.com"
log_info "2. 进入 'Account' -> 'Membership'"
log_info "3. 查看 'Team ID' 字段"
echo ""
read -p "请输入您的 Team ID: " team_id
if [ -n "$team_id" ]; then
echo "$team_id"
return 0
else
return 1
fi
}
# 更新配置文件
update_config() {
local team_id=$1
if [ -z "$team_id" ]; then
log_error "Team ID 为空"
return 1
fi
log_info "更新 ios_signing_config.sh 文件..."
# 备份原文件
cp ios_signing_config.sh ios_signing_config.sh.backup
# 更新 Team ID
sed -i '' "s/export TEAM_ID=\"YOUR_TEAM_ID\"/export TEAM_ID=\"$team_id\"/" ios_signing_config.sh
# 更新签名身份
sed -i '' "s/export SIGNING_IDENTITY=\"iPhone Developer: Your Name (YOUR_TEAM_ID)\"/export SIGNING_IDENTITY=\"iPhone Developer: Your Name ($team_id)\"/" ios_signing_config.sh
sed -i '' "s/export DISTRIBUTION_IDENTITY=\"iPhone Distribution: Your Name (YOUR_TEAM_ID)\"/export DISTRIBUTION_IDENTITY=\"iPhone Distribution: Your Name ($team_id)\"/" ios_signing_config.sh
log_success "配置文件已更新"
log_info "Team ID: $team_id"
}
# 主函数
main() {
log_info "开始获取 Apple Developer Team ID..."
log_info "=========================================="
check_credentials
local team_id=""
# 尝试各种方法获取 Team ID
if team_id=$(get_team_id_altool); then
log_success "通过 xcrun altool 获取到 Team ID: $team_id"
elif team_id=$(get_team_id_xcodebuild); then
log_success "通过 xcodebuild 获取到 Team ID: $team_id"
elif team_id=$(get_team_id_certificates); then
log_success "通过开发者证书获取到 Team ID: $team_id"
else
team_id=$(get_team_id_manual)
if [ $? -eq 0 ]; then
log_success "手动输入 Team ID: $team_id"
else
log_error "无法获取 Team ID"
exit 1
fi
fi
# 更新配置文件
update_config "$team_id"
log_success "=========================================="
log_success "Team ID 获取完成!"
log_success "=========================================="
log_info "现在可以运行: source ios_signing_config.sh"
log_info "然后运行: ./build_ios_dmg.sh"
log_success "=========================================="
}
# 运行主函数
main "$@"