@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