#!/bin/bash # ============================================== # 配置参数 - 请根据实际情况修改以下参数 # ============================================== # 钥匙串配置 KEYCHAIN_PASSWORD="1234567" # 钥匙串密码 KEYCHAIN_PATH="$HOME/Library/Keychains/login.keychain-db" # 钥匙串路径 # 项目路径配置 PROJECT_DIR="$HOME/Desktop/lx_uniapp/build/git_work_code/Ios/HBuilder-Hello" # 项目目录 PROJECT_NAME="HBuilder-Hello.xcodeproj" # Xcode项目文件名 SCHEME_NAME="HBuilder" # 构建方案名称 CONFIGURATION="Release" # 构建配置 # 构建输出配置 BUILD_DIR="$HOME/Desktop/lx_uniapp/build" # 构建输出目录 ARCHIVE_NAME="HBuilder.xcarchive" # 归档文件名 IPA_DIR_NAME="ipa_production" # IPA输出目录名 DERIVED_DATA_DIR="$HOME/Library/Developer/Xcode/DerivedData/*" # 衍生数据目录 # 版本配置 MARKETING_VERSION="$1" # 市场版本号 CURRENT_PROJECT_VERSION="$2" # 项目内部版本号 # 签名配置 CODE_SIGN_IDENTITY="Apple Distribution: Bank of Jilin Co., Ltd. (2EP6SRRN43)" # 签名标识 PROVISIONING_PROFILE="e3487fe1-19dc-4fc7-90df-11caf27da0c6" # 配置文件UUID DEVELOPMENT_TEAM="2EP6SRRN43" # 开发团队ID CODE_SIGNING_REQUIRED="YES" # 是否需要签名 # 导出配置 EXPORT_OPTIONS_PLIST="$BUILD_DIR/ExportOptions_Production.plist" # 导出配置plist路径 # ============================================== # 错误处理函数 error_exit() { echo "❌ $1" exit 1 } # 0. 解锁钥匙串并授予权限 echo "🔑 解锁钥匙串..." security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH" || { error_exit "钥匙串解锁失败" } # 1. 进入项目目录 echo "📂 进入项目目录: $PROJECT_DIR" cd "$PROJECT_DIR" || { error_exit "无法进入项目目录: $PROJECT_DIR" } # 2. 清理旧构建 echo "🧹 清理旧构建..." xcodebuild -project "$PROJECT_NAME" -scheme "$SCHEME_NAME" -configuration "$CONFIGURATION" clean || { error_exit "清理构建失败" } # 3. 删除上次构建内容 echo "🗑️ 删除上次构建内容..." setopt rm_star_silent nullglob rm -rf "$BUILD_DIR/$ARCHIVE_NAME" "$BUILD_DIR/$IPA_DIR_NAME" "$DERIVED_DATA_DIR" unsetopt rm_star_silent nullglob # 恢复默认设置 # 4. 归档项目 echo "📦 开始归档项目..." xcodebuild -project "$PROJECT_NAME" \ -scheme "$SCHEME_NAME" \ -configuration "$CONFIGURATION" \ -archivePath "$BUILD_DIR/$ARCHIVE_NAME" \ MARKETING_VERSION="$MARKETING_VERSION" \ CURRENT_PROJECT_VERSION="$CURRENT_PROJECT_VERSION" \ -destination 'generic/platform=iOS' \ CODE_SIGN_IDENTITY="$CODE_SIGN_IDENTITY" \ PROVISIONING_PROFILE="$PROVISIONING_PROFILE" \ DEVELOPMENT_TEAM="$DEVELOPMENT_TEAM" \ CODE_SIGNING_REQUIRED="$CODE_SIGNING_REQUIRED" \ OTHER_CFLAGS="" \ OTHER_CPLUSPLUS_FLAGS="" \ OTHER_SWIFT_FLAGS="" \ archive || { error_exit "项目归档失败" } # 5. 导出IPA文件 echo "📤 导出IPA文件..." xcodebuild -exportArchive \ -archivePath "$BUILD_DIR/$ARCHIVE_NAME" \ -exportPath "$BUILD_DIR/$IPA_DIR_NAME" \ -exportOptionsPlist "$EXPORT_OPTIONS_PLIST" || { error_exit "IPA导出失败" } echo "🎉 构建完成!IPA文件已导出至: $BUILD_DIR/$IPA_DIR_NAME"