Kaynağa Gözat

Add 添加安卓打包代码

Yue 1 ay önce
ebeveyn
işleme
4fef327399

+ 12 - 0
UI/CF.APP/chicken_farm/.scripts/_build_cmd.txt

@@ -0,0 +1,12 @@
+flutter build apk --target-platform android-arm
+
+mkdir -p release/app
+
+flutter build apk --target-platform android-arm --dart-define-from-file .env/.env.prod_no_pda --verbose
+copy build\app\outputs\flutter-apk\app-release.apk release\app\cf-app.apk
+
+flutter build apk --target-platform android-arm --dart-define-from-file .env/.env.prod --verbose
+copy build\app\outputs\flutter-apk\app-release.apk release\app\pda_cf-app.apk
+
+flutter build apk --target-platform android-arm --dart-define-from-file .env/.env.prod_offline --verbose
+copy build\app\outputs\flutter-apk\app-release.apk release\app\pda-offline_cf-app.apk

+ 86 - 0
UI/CF.APP/chicken_farm/.scripts/build.bat

@@ -0,0 +1,86 @@
+@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%
+)
+
+

+ 66 - 0
UI/CF.APP/chicken_farm/.scripts/build_all_apk.bat

@@ -0,0 +1,66 @@
+@echo off
+chcp 936 >nul 2>&1
+setlocal enabledelayedexpansion
+
+:: ========== 全局配置(修复路径问题) ==========
+:: 当前脚本目录(.scripts)
+set "SCRIPT_DIR=%~dp0"
+:: 项目根目录(.scripts 的上级目录)
+set "PROJECT_ROOT=%SCRIPT_DIR%.."
+:: 编译脚本路径(直接指向当前目录的 build.bat,无需重复拼接 .scripts)
+set "BUILD_SCRIPT=%SCRIPT_DIR%build.bat"
+
+:: ========== 前置检查 ==========
+if not exist "%BUILD_SCRIPT%" (
+  echo [错误] 未找到编译脚本:%BUILD_SCRIPT%
+  pause
+  exit /b 1
+)
+
+:: ========== 依次执行编译命令 ==========
+echo ==============================================
+echo 开始批量编译所有APK(共3个环境)
+echo ==============================================
+
+:: 1. 编译 prod 基础环境
+echo.
+echo [第1个] 开始编译:prod 基础环境
+call "%BUILD_SCRIPT%" prod
+if !errorlevel! neq 0 (
+  echo [错误] prod 基础环境编译失败!
+  pause
+  exit /b 1
+)
+echo [第1个] prod 基础环境编译完成 ??
+
+:: 2. 编译 prod_no_pda 环境
+echo.
+echo [第2个] 开始编译:prod no_pda 环境
+call "%BUILD_SCRIPT%" prod no_pda
+if !errorlevel! neq 0 (
+  echo [错误] prod no_pda 环境编译失败!
+  pause
+  exit /b 1
+)
+echo [第2个] prod no_pda 环境编译完成 ??
+
+:: 3. 编译 prod_offline 环境
+echo.
+echo [第3个] 开始编译:prod offline 环境
+call "%BUILD_SCRIPT%" prod offline
+if !errorlevel! neq 0 (
+  echo [错误] prod offline 环境编译失败!
+  pause
+  exit /b 1
+)
+echo [第3个] prod offline 环境编译完成 ??
+
+:: ========== 批量编译完成 ==========
+echo.
+echo ==============================================
+echo 所有APK编译完成!?
+echo 生成的文件位于:%PROJECT_ROOT%\release\app\
+echo ==============================================
+
+pause
+endlocal