添加Mac环境打包脚本
This commit is contained in:
parent
122dfd6542
commit
8fd0303427
|
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# Ensure UTF-8 locale for macOS terminals
|
||||
export LANG=en_US.UTF-8
|
||||
export LC_ALL=en_US.UTF-8
|
||||
|
||||
# Resolve project directory (script location)
|
||||
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
echo "Project dir: $PROJECT_DIR"
|
||||
|
||||
force_delete() {
|
||||
local target="$1"
|
||||
local max_retries=3
|
||||
local retry_delay=1
|
||||
|
||||
if [ ! -e "$PROJECT_DIR/$target" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
for i in $(seq 1 $max_retries); do
|
||||
echo "Attempting to delete $target (try $i of $max_retries)"
|
||||
rm -rf "$PROJECT_DIR/$target" 2>/dev/null || true
|
||||
if [ ! -e "$PROJECT_DIR/$target" ]; then
|
||||
echo "Successfully deleted $target"
|
||||
return 0
|
||||
fi
|
||||
if [ "$i" -lt "$max_retries" ]; then
|
||||
sleep $retry_delay
|
||||
retry_delay=$((retry_delay * 2))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Warning: Could not completely delete $target, some files may be in use"
|
||||
return 1
|
||||
}
|
||||
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
echo "Running flutter clean..."
|
||||
if ! flutter clean; then
|
||||
echo "flutter clean failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Removing residual files"
|
||||
force_delete build || true
|
||||
force_delete .dart_tool || true
|
||||
force_delete pubspec.lock || true
|
||||
|
||||
echo "Running flutter pub get..."
|
||||
if ! flutter pub get; then
|
||||
echo "flutter pub get failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running build_runner (if present)..."
|
||||
if ! flutter packages pub run build_runner build --delete-conflicting-outputs; then
|
||||
echo "build_runner failed or not present — continuing"
|
||||
fi
|
||||
|
||||
echo "Building iOS release..."
|
||||
if ! flutter build ios --release; then
|
||||
echo "iOS build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OUTPUT_DIR="$PROJECT_DIR/build/ios/iphoneos"
|
||||
echo "Opening iOS build output directory: $OUTPUT_DIR"
|
||||
if [ -d "$OUTPUT_DIR" ]; then
|
||||
open "$OUTPUT_DIR"
|
||||
else
|
||||
echo "iOS build output directory does not exist: $OUTPUT_DIR"
|
||||
fi
|
||||
|
||||
echo "All steps completed successfully!"
|
||||
echo "iOS output (if built): $OUTPUT_DIR"
|
||||
|
||||
exit 0
|
||||
Loading…
Reference in New Issue