h-1.flutter.4/scripts/build_with_expiry.sh

70 lines
No EOL
2.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Version: 1.0.0
#
# 販売アシスト 1 号用の APK ビルドスクリプト
# 自動的な BUILD_TIMESTAMPUTC タイムスタンプを付与し、90 日寿命チェックされた APK を生成
set -e
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
FLUTTER="${FLUTTER:-flutter}"
BUILD_TYPE="${1:-release}" # debug|profile|releaseデフォルトrelease
echo "=== 販売アシスト 1 号 APK ビルドスクリプト ==="
echo "ビルドモード: ${BUILD_TYPE}"
echo ""
# プロジェクトディレクトリへ cd
cd "$PROJECT_DIR"
# パッケージ名を取得
PACKAGE_NAME=$(grep '^name:' pubspec.yaml | cut -d' ' -f2)
# 環境チェック
if [ ! -f "pubspec.lock" ]; then
echo "[エラー] pubspec.lock を発見できません。flutter pub get を実行してください。"
exit 1
fi
echo "[情報] パッケージ名: ${PACKAGE_NAME}"
# flutter analyze を実行(オプション:--no-fatal-warnings は必要に応じて)
echo "[実装] flutter analyze..."
$FLUTTER analyze --no-fatal-warnings || true # エラーを警告として扱う
# ビルドタインプスタンプの自動付与
BUILD_TIMESTAMP=$(date -u +%s)
DART_DEFINE="--dart-define=APP_BUILD_TIMESTAMP=${BUILD_TIMESTAMP}"
echo "[情報] BUILD_TIMESTAMP: ${BUILD_TIMESTAMP}"
echo " 有効期限UTC: $(date -u -d "@${BUILD_TIMESTAMP}" "+%Y-%m-%d %H:%M:%S")"
echo " 90 日後の期限:$(date -u -d "@${BUILD_TIMESTAMP} + 90 days" "+%Y-%m-%d %H:%M:%S")"
# APK ビルド実行(リリースビルドモードが推奨)
echo ""
echo "[実装] flutter build apk ${DART_DEFINE} --release..."
$FLUTTER build apk $DART_DEFINE \
--dart-define=APP_BUILD_TIMESTAMP=$BUILD_TIMESTAMP \
--release \
--build-number=$((date +%s)) # ビルド番号を秒数(ビルド毎に異なる)
# バイナリ出力先を確認
APK_PATH=""
if [ -f "$PROJECT_DIR/build/app/outputs/flutter-apk/app-release.apk" ]; then
APK_PATH="$PROJECT_DIR/build/app/outputs/flutter-apk/app-release.apk"
elif [ -f "$PROJECT_DIR/build/app/outputs/bundle/release/app-release.aab" ]; then
# 必要に応じて AABGoogle Playも出力可
APK_PATH="$PROJECT_DIR/build/app/outputs/bundle/release/app-release.aab"
fi
if [ ! -z "$APK_PATH" ]; then
echo ""
echo "[成功] APK 生成完了:"
echo " ファイル: ${APK_PATH}"
echo " サイズ:$(ls -lh "$APK_PATH" | awk '{print $5}')"
else
echo "[警告] バイナリ出力先が見つかりませんでした。"
fi
echo ""
echo "=== ビルド完了 ==="