78 lines
2.5 KiB
Bash
Executable File
78 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
||
set -e
|
||
|
||
# 设置工作目录为脚本所在目录
|
||
cd "$(dirname "$0")"
|
||
|
||
echo "清理构建目录..."
|
||
rm -rf build
|
||
rm -rf tvbox.xcarchive
|
||
rm -f TVBox.ipa
|
||
|
||
# 证书和配置 (从 secrets.sh 加载,此文件在 IOS-key 中已 gitignore)
|
||
if [ -f "IOS-key/secrets.sh" ]; then
|
||
source "IOS-key/secrets.sh"
|
||
else
|
||
echo "❌ 错误: 未找到 IOS-key/secrets.sh,请确保该文件存在。"
|
||
exit 1
|
||
fi
|
||
|
||
P12_PATH="IOS-key/cert.p12"
|
||
PROVISION_PATH="IOS-key/cert.mobileprovision"
|
||
# 变量已从 secrets.sh 加载: $P12_PASSWORD, $PROVISION_UUID, $TEAM_ID, $BUNDLE_ID, $SIGNING_IDENTITY
|
||
|
||
echo "安装 Provisioning Profile..."
|
||
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
|
||
cp "$PROVISION_PATH" "$HOME/Library/MobileDevice/Provisioning Profiles/$PROVISION_UUID.mobileprovision"
|
||
|
||
echo "导入 P12 证书..."
|
||
# 将证书导入当前用户的默认钥匙串 (login.keychain)
|
||
security import "$P12_PATH" -k ~/Library/Keychains/login.keychain-db -P "$P12_PASSWORD" -T /usr/bin/codesign || true
|
||
# 解锁钥匙串以防超时
|
||
security unlock-keychain -p "" ~/Library/Keychains/login.keychain-db
|
||
|
||
echo "Regenerating project with XcodeGen..."
|
||
xcodegen generate
|
||
|
||
SCHEME="tvbox"
|
||
CONFIGURATION="Release"
|
||
ARCHIVE_PATH="build/tvbox.xcarchive"
|
||
EXPORT_PATH="build/exported"
|
||
EXPORT_OPTIONS="ExportOptions.plist"
|
||
|
||
echo "开始构建 iOS Archive..."
|
||
xcodebuild archive \
|
||
-project tvbox.xcodeproj \
|
||
-scheme "$SCHEME" \
|
||
-configuration "$CONFIGURATION" \
|
||
-destination "generic/platform=iOS" \
|
||
-archivePath "$ARCHIVE_PATH" \
|
||
CODE_SIGN_STYLE=Manual \
|
||
CODE_SIGN_IDENTITY="$SIGNING_IDENTITY" \
|
||
PROVISIONING_PROFILE_SPECIFIER="$PROVISION_UUID" \
|
||
DEVELOPMENT_TEAM="$TEAM_ID" \
|
||
PRODUCT_BUNDLE_IDENTIFIER="$BUNDLE_ID"
|
||
|
||
if [ -f "$EXPORT_OPTIONS" ]; then
|
||
echo "发现 $EXPORT_OPTIONS,尝试导出 IPA..."
|
||
mkdir -p "$EXPORT_PATH"
|
||
xcodebuild -exportArchive \
|
||
-archivePath "$ARCHIVE_PATH" \
|
||
-exportOptionsPlist "$EXPORT_OPTIONS" \
|
||
-exportPath "$EXPORT_PATH" \
|
||
-allowProvisioningUpdates
|
||
|
||
# 查找生成的 .ipa 文件并移动到根目录
|
||
IPA_FILE=$(find "$EXPORT_PATH" -name "*.ipa" | head -n 1)
|
||
if [ -n "$IPA_FILE" ]; then
|
||
cp "$IPA_FILE" ./TVBox.ipa
|
||
echo "✅ 打包完成!生成文件: TVBox.ipa"
|
||
else
|
||
echo "⚠️ 未能在导出目录中找到 .ipa 文件。"
|
||
fi
|
||
else
|
||
echo "ℹ️ 未找到 $EXPORT_OPTIONS,仅生成 Archive。"
|
||
echo "✅ 构建完成!Archive 路径: $ARCHIVE_PATH"
|
||
echo "您可以打开 Xcode 使用 Distribute App 手动导出 IPA。"
|
||
fi
|