| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- @echo off
- chcp 65001 >nul 2>&1
- setlocal enabledelayedexpansion
- :: ========== 1. 项目根目录初始化 ==========
- set "PROJECT_ROOT=%~dp0\.."
- for %%i in ("%PROJECT_ROOT%") do set "PROJECT_ROOT=%%~fi"
- :: ========== 2. 参数校验 ==========
- if "%~1"=="" (
- echo [Error] 请使用命令: run_env.bat [prod|dev] [no_pda|offline] [android-arm,android-arm64] [appName]
- echo [示例] run_env.bat prod no_pda android-arm,android-arm64 "no_pda_cf-app"
- pause
- exit /b 1
- )
- if /i not "%~1"=="prod" if /i not "%~1"=="dev" (
- echo [Error] 参数1无效,仅支持 prod 或 dev
- pause
- exit /b 1
- )
- if not "%~2"=="" if /i not "%~2"=="no_pda" if /i not "%~2"=="offline" (
- echo [Error] 参数2无效,仅支持 no_pda 或 offline
- pause
- exit /b 1
- )
- :: ========== 3. 环境变量加载 ==========
- set "ENV=%~1"
- if not "%~2"=="" set "ENV=%~1_%~2"
- set "ANDROID_PLATFORM=android-arm"
- if not "%~3"=="" set "ANDROID_PLATFORM=%~3"
- set "APP_NAME=cf-app"
- if not "%~2"=="" set "APP_NAME=%~2_%APP_NAME%"
- if not "%~4"=="" set "APP_NAME=%~4"
- set "ENV_FILE=%PROJECT_ROOT%\.env\.env.%ENV%"
- if not exist "%ENV_FILE%" (
- echo [Error] 环境文件不存在: %ENV_FILE%
- pause
- exit /b 1
- )
- :: ========== 4. 构建参数生成 ==========
- set "DEFINE_ARGS="
- for /f "tokens=1,* delims==" %%a in ('type "%ENV_FILE%" ^| findstr /v "^#" ^| findstr /v "^$"') do (
- set "DEFINE_ARGS=!DEFINE_ARGS! --dart-define=%%a=%%b"
- )
- :: ========== 5. 执行构建 ==========
- echo ==============================================
- echo [INFO] 开始构建: 环境=%ENV% ^| 平台=%ANDROID_PLATFORM% ^| 应用=%APP_NAME%
- cd /d "%PROJECT_ROOT%"
- call flutter build apk !DEFINE_ARGS! --target-platform !ANDROID_PLATFORM! --no-tree-shake-icons
- if !errorlevel! neq 0 (
- echo [Error] Flutter构建失败
- pause
- exit /b 1
- )
- :: ========== 6. 文件处理优化 ==========
- :: 生成时间戳 (YYYYMMDDHHMMSS)
- for /f %%i in ('powershell -Command "Get-Date -Format yyyyMMddHHmmss"') do set TIMESTAMP=%%i
- set "APK_SOURCE=%PROJECT_ROOT%\build\app\outputs\flutter-apk\app-release.apk"
- set "APK_DEST=%PROJECT_ROOT%\release\app\%APP_NAME%_%TIMESTAMP%.apk"
- if exist "%APK_SOURCE%" (
- copy /y "%APK_SOURCE%" "%APK_DEST%" >nul
- echo ==============================================
- echo [INFO] APK生成成功: %APK_DEST%
- echo ==============================================
- ) else (
- echo [Error] APK源文件不存在: %APK_SOURCE%
- )
|