Files
MosisService/docs/BUILD.md

5.1 KiB

MosisService Build Configuration

Overview

This document outlines the build configuration and toolchain information for the MosisService project, optimized for maximum compiler feedback and debugging capabilities on Windows.

Gradle Build Configuration

Build Flags and Options

The project uses Gradle with Android build system that includes the following optimization flags:

Android Build Configuration

In build.gradle.kts:

  • Compile SDK: API level 36 (Android 14)
  • Target SDK: API level 36
  • Min SDK: API level 34 (Android 14)
  • ndkVersion: 29.0.14206865
  • ABI: arm64-v8a only

Optimization and Debug Flags

  • JVM target: JDK 11
  • C++ standard: C++23
  • Debug builds include full symbol information
  • Release builds include optimization flags (-O2)

CMake Build Configuration

CMake Flags for Maximum Feedback

In CMakeLists.txt:

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Compiler Flags for Windows

# Debug flags for maximum feedback
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra -Wpedantic -Werror")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")

# Enable all warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-unused-variable")

C++23 Features and Debugging

  • Enabled C++23 standard with std::span, std::format
  • Debug build includes full debug symbols
  • Address Sanitizer enabled in debug builds
  • Undefined Behavior Sanitizer enabled in debug builds

Windows Build Toolchain

Required Tools

  1. Android Studio with Android NDK

    • Android SDK
    • Android NDK (version 29.0.14206865)
    • CMake (version 3.22.1 or higher)
  2. Visual Studio 2022

    • C++ development tools
    • Windows SDK
    • CMake tools for Visual Studio
  3. vcpkg

    • Package manager for dependencies
    • RmlUi with Lua support (if available)

Environment Variables

ANDROID_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk
ANDROID_NDK_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\29.0.14206865
VCPKG_ROOT=C:\Tools\vcpkg

Build Commands

For maximum feedback:

Debug Build with All Warnings

./gradlew assembleDebug -Pandroid.jetifier.enable=true -Pandroid.build.legacyBundleTool=false

Release Build with Optimization

./gradlew assembleRelease -Pandroid.jetifier.enable=true -Pandroid.build.legacyBundleTool=false

Build Process Steps

1. Prerequisites Setup

  • Install Android Studio with NDK
  • Install Visual Studio 2022 with C++ tools
  • Set up vcpkg and install required dependencies
  • Configure environment variables

2. Build Configuration

# Clean previous builds
./gradlew clean

# Build with verbose output for maximum feedback
./gradlew build --info --stacktrace --configure-on-demand

# Build with all warnings enabled
./gradlew compileDebugKotlin --warning-mode all

3. CMake Configuration

To enable full compiler feedback in CMake:

# Debug configuration with all warnings
cmake -DCMAKE_BUILD_TYPE=Debug 
      -DCMAKE_CXX_FLAGS_DEBUG="-g -O0 -Wall -Wextra -Wpedantic -Werror -fsanitize=address,undefined" 
      -DCMAKE_CXX_STANDARD=23 
      -DCMAKE_CXX_STANDARD_REQUIRED=ON
      .

# Release configuration
cmake -DCMAKE_BUILD_TYPE=Release 
      -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG -flto=full" 
      .

Output Locations

Android APKs

build\outputs\apk\debug\app-debug.apk
build\outputs\apk\release\app-release-unsigned.apk

Native Libraries

build\intermediates\cmake\debug\obj\arm64-v8a\libmosis-service.so
build\intermediates\cmake\debug\obj\arm64-v8a\libmosis-test.so

Build Artifacts

build\intermediates\cxx\Debug\1r2562ic\arm64-v8a\
build\intermediates\cmake\debug\output\lib\arm64-v8a\

Troubleshooting Build Issues

Common Debug Flags

# Enable verbose C++ compilation
./gradlew compileDebugCpp --info

# Enable all warnings and stop on first error
./gradlew build -PcompileDebugCpp.warningMode=all

# Show compiler output
./gradlew build --console=plain

Debugging Symbols

To include debugging symbols:

# In CMakeLists.txt
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -ggdb")

Compiler-Specific Flags

# For MSVC (if using Visual Studio)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 /WX /Od /Zi")

# For Clang (if building with clang)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fstandalone-debug -fexceptions -frtti")

Toolchain Locations

Android SDK

C:\Users\%USERNAME%\AppData\Local\Android\Sdk

Android NDK

C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\29.0.14206865

Visual Studio Tools

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\

CMake Location

C:\Program Files\CMake\bin\cmake.exe

For Development with Maximum Feedback

# Clean and build with maximum warnings
./gradlew clean && ./gradlew build --warning-mode all --info --stacktrace

# Debug build with sanitizer
./gradlew assembleDebug -Pandroid.jetifier.enable=true

For Release Builds

# Release build with optimization
./gradlew assembleRelease -Pandroid.jetifier.enable=true