From ab9dd5eec79499d8ee2723eb03f8734ae5e95adc Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Tue, 9 Dec 2025 11:21:08 +0800 Subject: [PATCH] =?UTF-8?q?build(ios):=20=E6=9B=B4=E6=96=B0iOS=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E8=84=9A=E6=9C=AC=E5=B9=B6=E8=AE=BE=E7=BD=AE=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E6=98=BE=E7=A4=BA=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改构建脚本以支持输出到指定目录或文件路径 - 使用 flutter build ipa 替代旧的构建命令 - 添加对构建产物 IPA 文件的查找与复制逻辑 - 在 Xcode 项目中设置 CFBundleDisplayName 为 "趣恋恋" --- ios/Runner.xcodeproj/project.pbxproj | 3 ++ scripts/build_ios.sh | 43 ++++++++++++++++++---------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 6560068..53e8c42 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -496,6 +496,7 @@ DEVELOPMENT_TEAM = P65XS8BRNU; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "趣恋恋"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -683,6 +684,7 @@ DEVELOPMENT_TEAM = P65XS8BRNU; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "趣恋恋"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -710,6 +712,7 @@ DEVELOPMENT_TEAM = P65XS8BRNU; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "趣恋恋"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/scripts/build_ios.sh b/scripts/build_ios.sh index 8868128..c0dcbbe 100755 --- a/scripts/build_ios.sh +++ b/scripts/build_ios.sh @@ -1,14 +1,15 @@ #!/bin/bash # usage: -# ./scripts/build_ios.sh --output /absolute/path/to/output [extra flutter build args...] +# ./scripts/build_ios.sh --output /absolute/path/to/output.ipa [extra flutter build args...] +# ./scripts/build_ios.sh --output /absolute/path/to/dir [extra flutter build args...] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" -DEFAULT_BUILD_DIR="$PROJECT_ROOT/build/ios_release" -OUTPUT_DIR="$DEFAULT_BUILD_DIR" +DEFAULT_OUTPUT_DIR="$PROJECT_ROOT/build/ios_release" +OUTPUT_DIR="$DEFAULT_OUTPUT_DIR" EXTRA_ARGS=() while [[ $# -gt 0 ]]; do @@ -41,23 +42,35 @@ flutter clean echo "📚 获取依赖..." flutter pub get -echo "🚀 开始构建 iOS 安装包..." +echo "🚀 开始构建 iOS IPA..." if [[ ${#EXTRA_ARGS[@]} -gt 0 ]]; then - flutter build ios --release "${EXTRA_ARGS[@]}" + flutter build ipa --release "${EXTRA_ARGS[@]}" else - flutter build ios --release + flutter build ipa --release fi -# iOS build output is typically in build/ios/iphoneos/ -BUILD_OUTPUT_DIR="$PROJECT_ROOT/build/ios/iphoneos" -if [[ -d "$BUILD_OUTPUT_DIR" ]]; then - echo "📦 复制构建产物到输出目录..." - mkdir -p "$OUTPUT_DIR" - cp -R "$BUILD_OUTPUT_DIR"/* "$OUTPUT_DIR/" 2>/dev/null || true - echo "✅ 构建完成,产物目录:$OUTPUT_DIR" +# IPA build output is typically in build/ios/ipa/ +IPA_DIR="$PROJECT_ROOT/build/ios/ipa" +BUILT_IPA="$(find "$IPA_DIR" -maxdepth 1 -name '*.ipa' -print | head -n 1)" + +if [[ -z "$BUILT_IPA" || ! -f "$BUILT_IPA" ]]; then + echo "❌ 错误: 未找到构建出的 IPA 文件" >&2 + echo "构建产物目录:$IPA_DIR" >&2 + exit 1 +fi + +# Determine target path +if [[ "$OUTPUT_DIR" == *.ipa ]]; then + # Output is a file path + TARGET_PATH="$OUTPUT_DIR" + mkdir -p "$(dirname "$TARGET_PATH")" else - echo "⚠️ 警告: 未找到预期的构建输出目录 $BUILD_OUTPUT_DIR" - echo "构建产物可能在:$PROJECT_ROOT/build/ios/" + # Output is a directory + mkdir -p "$OUTPUT_DIR" + TARGET_PATH="$OUTPUT_DIR/$(basename "$BUILT_IPA")" fi + +cp "$BUILT_IPA" "$TARGET_PATH" +echo "✅ 构建完成,IPA 已保存到:$TARGET_PATH" popd >/dev/null