| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- @echo off
- chcp 936 >nul 2>&1
- setlocal enabledelayedexpansion
- :: ========== 1. 基础配置 ==========
- set "PROJECT_ROOT=%~dp0\.."
- for %%i in ("%PROJECT_ROOT%") do set "PROJECT_ROOT=%%~fi"
- :: ========== 2. 参数校验 ==========
- if "%1" == "" (
- echo [错误] 用法:run_env.bat [prod^|dev] [^|no_pda^|offline] [appName]
- echo [示例] run_env.bat prod no_pda "no_pda_cf-app"
- pause
- exit /b 1
- )
- if /i not "%1" == "prod" if /i not "%1" == "dev" (
- echo [错误] 第一个参数必须是 prod 或 dev
- pause
- exit /b 1
- )
- if not "%2" == "" if /i not "%2" == "no_pda" if /i not "%2" == "offline" (
- echo [错误] 第二个参数只能是空、no_pda 或 offline
- pause
- exit /b 1
- )
- :: ========== 3. 核心变量拼接(修复APP_NAME) ==========
- set "ENV=%1"
- if not "%2" == "" set "ENV=%1_%2"
- :: APP名称修复:先赋值默认值,再拼接修饰符
- set "APP_NAME=cf-app" :: 先设置默认值
- if not "%2" == "" set "APP_NAME=%2_%APP_NAME%" :: 有修饰符则拼接
- if not "%3" == "" set "APP_NAME=%3" :: 自定义名称优先级最高
- set "ENV_FILE=%PROJECT_ROOT%\.env\.env.%ENV%"
- if not exist "%ENV_FILE%" (
- echo [错误] 配置文件不存在:%ENV_FILE%
- pause
- exit /b 1
- )
- :: ========== 4. 解析dart-define参数 ==========
- 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 [开始编译] 环境:%ENV% ^| APP名称:%APP_NAME%
- echo ==============================================
- cd /d "%PROJECT_ROOT%"
- call flutter build apk !DEFINE_ARGS! --target-platform android-arm --no-tree-shake-icons
- if !errorlevel! neq 0 (
- echo [错误] Flutter编译失败!
- pause
- exit /b 1
- )
- :: ========== 6. 简化版时间戳 ==========
- set "TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
- set "TIMESTAMP=!TIMESTAMP: =0!"
- set "TIMESTAMP=!TIMESTAMP:周一=!" & set "TIMESTAMP=!TIMESTAMP:周二=!" & set "TIMESTAMP=!TIMESTAMP:周三=!"
- set "TIMESTAMP=!TIMESTAMP:周四=!" & set "TIMESTAMP=!TIMESTAMP:周五=!" & set "TIMESTAMP=!TIMESTAMP:周六=!" & set "TIMESTAMP=!TIMESTAMP:周日=!"
- :: ========== 7. 复制APK文件 ==========
- set "APK_SOURCE=%PROJECT_ROOT%\build\app\outputs\flutter-apk\app-release.apk"
- set "APK_DEST_DIR=%PROJECT_ROOT%\release\app\"
- set "APK_DEST=%APK_DEST_DIR%%APP_NAME%_!TIMESTAMP!.apk"
- if not exist "%APK_DEST_DIR%" md "%APK_DEST_DIR%" >nul
- if exist "%APK_SOURCE%" (
- copy /y "%APK_SOURCE%" "%APK_DEST%" >nul
- echo ==============================================
- echo [编译成功] APK文件已生成:
- echo %APK_DEST%
- echo ==============================================
- ) else (
- echo [错误] 未找到编译产物:%APK_SOURCE%
- )
|