Files
wnmj-normal/proj.android/build_android.bat
2026-03-03 13:56:44 +08:00

162 lines
4.3 KiB
Batchfile

@echo off
setlocal
REM ============================================================
REM Android Build Script (NDK + Gradle)
REM Usage:
REM build_android.bat - Build debug APK (C++ + Java)
REM build_android.bat release - Build release APK (C++ + Java)
REM build_android.bat java - Build debug APK (Java only)
REM build_android.bat clean - Clean build artifacts
REM ============================================================
set PROJECT_DIR=%~dp0..
set ANDROID_DIR=%~dp0
set NDK_DIR=D:\Android\sdk\ndk\16.1.4479499
set NDK_MODULE_PATH=%PROJECT_DIR%;%PROJECT_DIR%\cocos2d;%PROJECT_DIR%\cocos2d\cocos;%PROJECT_DIR%\cocos2d\external
if /i "%1"=="release" goto :build_release
if /i "%1"=="java" goto :build_java_only
if /i "%1"=="clean" goto :clean
goto :build_debug
:build_debug
echo.
echo ============================================================
echo Build Mode: DEBUG (C++ + Java)
echo Project Dir: %PROJECT_DIR%
echo ============================================================
echo.
pushd "%ANDROID_DIR%"
echo [Step 1/4] Syncing resources...
if not exist "%ANDROID_DIR%assets" mkdir "%ANDROID_DIR%assets"
xcopy "%PROJECT_DIR%\Resources\*" "%ANDROID_DIR%assets\" /s /e /q /y /d
echo Resources synced.
echo.
echo [Step 2/4] Compiling C++ code (ndk-build)...
call "%NDK_DIR%\ndk-build.cmd" NDK_MODULE_PATH="%NDK_MODULE_PATH%" APP_PLATFORM=android-21 APP_ABI="armeabi-v7a arm64-v8a" NDK_DEBUG=1 -j4
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] NDK build failed!
popd
goto :eof
)
echo C++ compilation done.
echo.
echo [Step 3/4] Building APK (gradlew assembleDebug)...
call gradlew.bat assembleDebug
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] Gradle build failed!
popd
goto :eof
)
popd
echo.
echo ============================================================
echo BUILD SUCCEEDED!
echo APK: %ANDROID_DIR%build\outputs\apk\debug\
echo ============================================================
goto :eof
:build_release
echo.
echo ============================================================
echo Build Mode: RELEASE (C++ + Java)
echo Project Dir: %PROJECT_DIR%
echo ============================================================
echo.
pushd "%ANDROID_DIR%"
echo [Step 1/4] Syncing resources...
if not exist "%ANDROID_DIR%assets" mkdir "%ANDROID_DIR%assets"
xcopy "%PROJECT_DIR%\Resources\*" "%ANDROID_DIR%assets\" /s /e /q /y /d
echo Resources synced.
echo.
echo [Step 2/4] Compiling C++ code (ndk-build release)...
call "%NDK_DIR%\ndk-build.cmd" NDK_MODULE_PATH="%NDK_MODULE_PATH%" APP_PLATFORM=android-21 APP_ABI="armeabi-v7a arm64-v8a" NDK_DEBUG=0 -j4
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] NDK build failed!
popd
goto :eof
)
echo C++ compilation done.
echo.
echo [Step 3/4] Building APK (gradlew assembleRelease)...
call gradlew.bat assembleRelease
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] Gradle build failed!
popd
goto :eof
)
popd
echo.
echo ============================================================
echo BUILD SUCCEEDED!
echo APK: %ANDROID_DIR%build\outputs\apk\release\
echo ============================================================
goto :eof
:build_java_only
echo.
echo ============================================================
echo Build Mode: DEBUG (Java only, skip C++ compilation)
echo Project Dir: %PROJECT_DIR%
echo ============================================================
echo.
pushd "%ANDROID_DIR%"
echo [Step 1/2] Syncing resources...
if not exist "%ANDROID_DIR%assets" mkdir "%ANDROID_DIR%assets"
xcopy "%PROJECT_DIR%\Resources\*" "%ANDROID_DIR%assets\" /s /e /q /y /d
echo Resources synced.
echo.
echo [Step 2/2] Building APK (gradlew assembleDebug)...
call gradlew.bat assembleDebug
if %ERRORLEVEL% neq 0 (
echo.
echo [ERROR] Gradle build failed!
popd
goto :eof
)
popd
echo.
echo ============================================================
echo BUILD SUCCEEDED!
echo APK: %ANDROID_DIR%build\outputs\apk\debug\
echo ============================================================
goto :eof
:clean
echo Cleaning build artifacts...
pushd "%ANDROID_DIR%"
call gradlew.bat clean
if exist "%ANDROID_DIR%build" rmdir /s /q "%ANDROID_DIR%build"
if exist "%ANDROID_DIR%obj" rmdir /s /q "%ANDROID_DIR%obj"
call "%NDK_DIR%\ndk-build.cmd" NDK_MODULE_PATH="%NDK_MODULE_PATH%" clean 2>nul
popd
echo Clean done.
goto :eof