diff --git a/build_business.sh b/build_business.sh new file mode 100644 index 0000000..7479b50 --- /dev/null +++ b/build_business.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# ============================================================================ +# Ponshu Room Lite - 店舗向けAPKビルドスクリプト +# IS_BUSINESS_APP=true / IS_PRO_VERSION=false +# ============================================================================ + +set -e + +TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) +OUTPUT_DIR="build/apk_releases/$TIMESTAMP" +mkdir -p "$OUTPUT_DIR" + +# APIキー (.env から読み込む) +if [ -f "$(dirname "$0")/.env" ]; then + export $(grep -v '^#' "$(dirname "$0")/.env" | xargs) +fi +MAITA_KEY="${MAITA_API_KEY:?MAITA_API_KEY is not set in .env}" +EIJI_KEY="${EIJI_API_KEY:?EIJI_API_KEY is not set in .env}" + +# build.gradle.kts バックアップ +GRADLE_FILE="android/app/build.gradle.kts" +BACKUP_FILE="android/app/build.gradle.kts.backup" +cp "$GRADLE_FILE" "$BACKUP_FILE" + +cleanup() { + if [ -f "$BACKUP_FILE" ]; then + cp "$BACKUP_FILE" "$GRADLE_FILE" + rm "$BACKUP_FILE" + fi +} +trap cleanup EXIT + +echo "============================================================================" +echo "Ponshu Room Lite - Business APK Build" +echo "============================================================================" +echo "Output: $OUTPUT_DIR" +echo "" + +sed -i 's/applicationId = "com.posimai.ponshu_room"/applicationId = "com.posimai.ponshu_room_lite"/' "$GRADLE_FILE" + +echo "[1/2] Building Maita Business..." +flutter build apk --release \ + --dart-define=GEMINI_API_KEY=$MAITA_KEY \ + --dart-define=IS_PRO_VERSION=false \ + --dart-define=IS_BUSINESS_APP=true \ + --dart-define=USE_PROXY=false + +cp build/app/outputs/flutter-apk/app-release.apk "$OUTPUT_DIR/ponshu_room_business_maita.apk" +echo "Saved: $OUTPUT_DIR/ponshu_room_business_maita.apk" +echo "" + +echo "[2/2] Building Eiji Business..." +flutter build apk --release \ + --dart-define=GEMINI_API_KEY=$EIJI_KEY \ + --dart-define=IS_PRO_VERSION=false \ + --dart-define=IS_BUSINESS_APP=true \ + --dart-define=USE_PROXY=false + +cp build/app/outputs/flutter-apk/app-release.apk "$OUTPUT_DIR/ponshu_room_business_eiji.apk" +echo "Saved: $OUTPUT_DIR/ponshu_room_business_eiji.apk" +echo "" + +echo "============================================================================" +echo "Business build completed!" +echo "============================================================================" +ls -lh "$OUTPUT_DIR" diff --git a/build_consumer.sh b/build_consumer.sh new file mode 100644 index 0000000..2a2caf4 --- /dev/null +++ b/build_consumer.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# ============================================================================ +# Ponshu Room Lite - 消費者向けAPKビルドスクリプト +# IS_BUSINESS_APP=false / IS_PRO_VERSION=false +# ============================================================================ + +set -e + +TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) +OUTPUT_DIR="build/apk_releases/$TIMESTAMP" +mkdir -p "$OUTPUT_DIR" + +# APIキー (.env から読み込む) +if [ -f "$(dirname "$0")/.env" ]; then + export $(grep -v '^#' "$(dirname "$0")/.env" | xargs) +fi +MAITA_KEY="${MAITA_API_KEY:?MAITA_API_KEY is not set in .env}" +EIJI_KEY="${EIJI_API_KEY:?EIJI_API_KEY is not set in .env}" + +# build.gradle.kts バックアップ +GRADLE_FILE="android/app/build.gradle.kts" +BACKUP_FILE="android/app/build.gradle.kts.backup" +cp "$GRADLE_FILE" "$BACKUP_FILE" + +cleanup() { + if [ -f "$BACKUP_FILE" ]; then + cp "$BACKUP_FILE" "$GRADLE_FILE" + rm "$BACKUP_FILE" + fi +} +trap cleanup EXIT + +echo "============================================================================" +echo "Ponshu Room Lite - Consumer APK Build" +echo "============================================================================" +echo "Output: $OUTPUT_DIR" +echo "" + +sed -i 's/applicationId = "com.posimai.ponshu_room"/applicationId = "com.posimai.ponshu_room_lite"/' "$GRADLE_FILE" + +echo "[1/2] Building Maita Consumer..." +flutter build apk --release \ + --dart-define=GEMINI_API_KEY=$MAITA_KEY \ + --dart-define=IS_PRO_VERSION=false \ + --dart-define=IS_BUSINESS_APP=false \ + --dart-define=USE_PROXY=false + +cp build/app/outputs/flutter-apk/app-release.apk "$OUTPUT_DIR/ponshu_room_consumer_maita.apk" +echo "Saved: $OUTPUT_DIR/ponshu_room_consumer_maita.apk" +echo "" + +echo "[2/2] Building Eiji Consumer..." +flutter build apk --release \ + --dart-define=GEMINI_API_KEY=$EIJI_KEY \ + --dart-define=IS_PRO_VERSION=false \ + --dart-define=IS_BUSINESS_APP=false \ + --dart-define=USE_PROXY=false + +cp build/app/outputs/flutter-apk/app-release.apk "$OUTPUT_DIR/ponshu_room_consumer_eiji.apk" +echo "Saved: $OUTPUT_DIR/ponshu_room_consumer_eiji.apk" +echo "" + +echo "============================================================================" +echo "Consumer build completed!" +echo "============================================================================" +ls -lh "$OUTPUT_DIR" diff --git a/lib/main.dart b/lib/main.dart index 862b186..d54da7a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,15 @@ import 'services/migration_service.dart'; /// デフォルトはfalse(Lite版) ※ponshu_room_liteディレクトリのため const bool isProVersion = bool.fromEnvironment('IS_PRO_VERSION', defaultValue: false); +/// 店舗向けビルドかどうかを判定するビルド時フラグ +/// +/// ビルドコマンド: +/// - 消費者向け: flutter build apk --release --dart-define=IS_BUSINESS_APP=false +/// - 店舗向け: flutter build apk --release --dart-define=IS_BUSINESS_APP=true +/// +/// デフォルトはfalse(消費者向け) +const bool isBusinessApp = bool.fromEnvironment('IS_BUSINESS_APP', defaultValue: false); + void main() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 7827522..2e4d2a0 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -127,7 +127,8 @@ class _MainScreenState extends ConsumerState { }); final userProfile = ref.watch(userProfileProvider); - final isBusiness = userProfile.isBusinessMode; + // isBusinessApp=false(消費者向けビルド)では店舗モードを完全に無効化 + final isBusiness = isBusinessApp && userProfile.isBusinessMode; final t = Translations(userProfile.locale); // Translation helper // Define Screens for each mode