173 lines
4.7 KiB
Bash
Executable File
173 lines
4.7 KiB
Bash
Executable File
#!/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 "$@"
|