162 lines
4.3 KiB
Batchfile
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
|