|
@@ -1,86 +1,76 @@
|
|
|
@echo off
|
|
@echo off
|
|
|
-chcp 936 >nul 2>&1
|
|
|
|
|
|
|
+chcp 65001 >nul 2>&1
|
|
|
setlocal enabledelayedexpansion
|
|
setlocal enabledelayedexpansion
|
|
|
|
|
|
|
|
-:: ========== 1. 基础配置 ==========
|
|
|
|
|
|
|
+:: ========== 1. 椤圭洰鏍圭洰褰曞垵濮嬪寲 ==========
|
|
|
set "PROJECT_ROOT=%~dp0\.."
|
|
set "PROJECT_ROOT=%~dp0\.."
|
|
|
for %%i in ("%PROJECT_ROOT%") do set "PROJECT_ROOT=%%~fi"
|
|
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"
|
|
|
|
|
|
|
+:: ========== 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
|
|
pause
|
|
|
exit /b 1
|
|
exit /b 1
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-if /i not "%1" == "prod" if /i not "%1" == "dev" (
|
|
|
|
|
- echo [错误] 第一个参数必须是 prod 或 dev
|
|
|
|
|
|
|
+if /i not "%~1"=="prod" if /i not "%~1"=="dev" (
|
|
|
|
|
+ echo [Error] 鍙傛暟1鏃犳晥锛屼粎鏀�寔 prod 鎴� dev
|
|
|
pause
|
|
pause
|
|
|
exit /b 1
|
|
exit /b 1
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-if not "%2" == "" if /i not "%2" == "no_pda" if /i not "%2" == "offline" (
|
|
|
|
|
- echo [错误] 第二个参数只能是空、no_pda 或 offline
|
|
|
|
|
|
|
+if not "%~2"=="" if /i not "%~2"=="no_pda" if /i not "%~2"=="offline" (
|
|
|
|
|
+ echo [Error] 鍙傛暟2鏃犳晥锛屼粎鏀�寔 no_pda 鎴� offline
|
|
|
pause
|
|
pause
|
|
|
exit /b 1
|
|
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" :: 自定义名称优先级最高
|
|
|
|
|
|
|
+:: ========== 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%"
|
|
set "ENV_FILE=%PROJECT_ROOT%\.env\.env.%ENV%"
|
|
|
if not exist "%ENV_FILE%" (
|
|
if not exist "%ENV_FILE%" (
|
|
|
- echo [错误] 配置文件不存在:%ENV_FILE%
|
|
|
|
|
|
|
+ echo [Error] 鐜��鏂囦欢涓嶅瓨鍦�: %ENV_FILE%
|
|
|
pause
|
|
pause
|
|
|
exit /b 1
|
|
exit /b 1
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-:: ========== 4. 解析dart-define参数 ==========
|
|
|
|
|
|
|
+:: ========== 4. 鏋勫缓鍙傛暟鐢熸垚 ==========
|
|
|
set "DEFINE_ARGS="
|
|
set "DEFINE_ARGS="
|
|
|
for /f "tokens=1,* delims==" %%a in ('type "%ENV_FILE%" ^| findstr /v "^#" ^| findstr /v "^$"') do (
|
|
for /f "tokens=1,* delims==" %%a in ('type "%ENV_FILE%" ^| findstr /v "^#" ^| findstr /v "^$"') do (
|
|
|
set "DEFINE_ARGS=!DEFINE_ARGS! --dart-define=%%a=%%b"
|
|
set "DEFINE_ARGS=!DEFINE_ARGS! --dart-define=%%a=%%b"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-:: ========== 5. 执行编译 ==========
|
|
|
|
|
-echo ==============================================
|
|
|
|
|
-echo [开始编译] 环境:%ENV% ^| APP名称:%APP_NAME%
|
|
|
|
|
|
|
+:: ========== 5. 鎵ц�鏋勫缓 ==========
|
|
|
echo ==============================================
|
|
echo ==============================================
|
|
|
|
|
+echo [INFO] 寮€濮嬫瀯寤�: 鐜��=%ENV% ^| 骞冲彴=%ANDROID_PLATFORM% ^| 搴旂敤=%APP_NAME%
|
|
|
cd /d "%PROJECT_ROOT%"
|
|
cd /d "%PROJECT_ROOT%"
|
|
|
-call flutter build apk !DEFINE_ARGS! --target-platform android-arm --no-tree-shake-icons
|
|
|
|
|
|
|
+call flutter build apk !DEFINE_ARGS! --target-platform !ANDROID_PLATFORM! --no-tree-shake-icons
|
|
|
if !errorlevel! neq 0 (
|
|
if !errorlevel! neq 0 (
|
|
|
- echo [错误] Flutter编译失败!
|
|
|
|
|
|
|
+ echo [Error] Flutter鏋勫缓澶辫触
|
|
|
pause
|
|
pause
|
|
|
exit /b 1
|
|
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:周日=!"
|
|
|
|
|
|
|
+:: ========== 6. 鏂囦欢澶勭悊浼樺寲 ==========
|
|
|
|
|
+:: 鐢熸垚鏃堕棿鎴� (YYYYMMDDHHMMSS)
|
|
|
|
|
+for /f %%i in ('powershell -Command "Get-Date -Format yyyyMMddHHmmss"') do set TIMESTAMP=%%i
|
|
|
|
|
|
|
|
-:: ========== 7. 复制APK文件 ==========
|
|
|
|
|
set "APK_SOURCE=%PROJECT_ROOT%\build\app\outputs\flutter-apk\app-release.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
|
|
|
|
|
|
|
+set "APK_DEST=%PROJECT_ROOT%\release\app\%APP_NAME%_%TIMESTAMP%.apk"
|
|
|
|
|
|
|
|
if exist "%APK_SOURCE%" (
|
|
if exist "%APK_SOURCE%" (
|
|
|
copy /y "%APK_SOURCE%" "%APK_DEST%" >nul
|
|
copy /y "%APK_SOURCE%" "%APK_DEST%" >nul
|
|
|
echo ==============================================
|
|
echo ==============================================
|
|
|
- echo [编译成功] APK文件已生成:
|
|
|
|
|
- echo %APK_DEST%
|
|
|
|
|
|
|
+ echo [INFO] APK鐢熸垚鎴愬姛: %APK_DEST%
|
|
|
echo ==============================================
|
|
echo ==============================================
|
|
|
) else (
|
|
) else (
|
|
|
- echo [错误] 未找到编译产物:%APK_SOURCE%
|
|
|
|
|
|
|
+ echo [Error] APK婧愭枃浠朵笉瀛樺湪: %APK_SOURCE%
|
|
|
)
|
|
)
|
|
|
-
|
|
|
|
|
-
|
|
|