Installing miniaudio Library for Android (NDK & CMake) Установка аудио-библиотеки miniaudio для Android (NDK и CMake)

A step-by-step guide to downloading, configuring, and testing the single-file miniaudio.h audio library for Android on Windows using NDK, CMake, and ADB. Пошаговое руководство по скачиванию, настройке и тестированию заголовочной аудио-библиотеки miniaudio.h для Android на Windows с использованием NDK, CMake и ADB.

Before proceeding, make sure you have configured your environment using the previous guides: Перед продолжением убедитесь, что вы настроили рабочее окружение, следуя предыдущим инструкциям:

Step 1: Download Source Code Шаг 1: Скачивание исходного кода

Download the latest release zip archive directly from GitHub Releases: Скачайте zip-архив последнего релиза напрямую из GitHub Releases:

Download miniaudio Releases Скачать релизы miniaudio

Step 2: Extract the Library Шаг 2: Распаковка библиотеки

Extract the downloaded archive so that miniaudio.h is placed in your libraries folder: Распакуйте скачанный архив так, чтобы файл miniaudio.h находился в вашей папке библиотек:

C:\libs\miniaudio-0.11.21\include\miniaudio.h

Step 3: Create Project Directory Шаг 3: Создание директории проекта

Create a workspace folder and a new directory for your miniaudio Android test project: Создайте рабочую папку для проектов и новую директорию для вашего тестового Android-проекта miniaudio:

Windows (Command Prompt / PowerShell)

mkdir C:\projects\miniaudio-android-test
cd C:\projects\miniaudio-android-test

Step 4: Create Source Files (main.c & CMakeLists.txt) Шаг 4: Создание исходных файлов (main.c и CMakeLists.txt)

Create the source files in your project directory: Создайте исходные файлы в папке проекта:

Windows (Terminal / Notepad)

notepad main.c
notepad CMakeLists.txt

1. File Contents for main.c 1. Содержимое файла main.c

#define MINIAUDIO_IMPLEMENTATION
#include <miniaudio.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    ma_engine engine;
    ma_result result = ma_engine_init(NULL, &engine);
    if (result != MA_SUCCESS) {
        printf("Failed to initialize miniaudio engine.\n");
        return -1;
    }

    // Access the active backend via the device's context
    ma_device* pDevice = ma_engine_get_device(&engine);
    const char* backendName = ma_get_backend_name(pDevice->pContext->backend);

    printf("miniaudio engine initialized successfully!\n");
    printf("Active Audio Backend: %s\n", backendName);

    ma_engine_uninit(&engine);
    return 0;
}

2. File Contents for CMakeLists.txt 2. Содержимое файла CMakeLists.txt

Directly links the standard math library and Android system audio libraries: Напрямую подключает стандартную математическую библиотеку и системные аудио-библиотеки Android:

cmake_minimum_required(VERSION 3.21)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

project(miniaudio-android-test C)

# -----------------------------------------------------------------------------
# Library Paths
# -----------------------------------------------------------------------------
set(MINIAUDIO_INCLUDE_DIR "C:/libs/miniaudio-0.11.21/include")

# -----------------------------------------------------------------------------
# Define Project Source Files
# -----------------------------------------------------------------------------
set(PROJECT_SOURCES
    main.c
)

# -----------------------------------------------------------------------------
# Declare Target Type & Sources
# -----------------------------------------------------------------------------
add_executable(app)
target_sources(app PRIVATE ${PROJECT_SOURCES})

target_include_directories(app PRIVATE
    ${MINIAUDIO_INCLUDE_DIR}
)

# -----------------------------------------------------------------------------
# Link Libraries
# -----------------------------------------------------------------------------
target_link_libraries(app PRIVATE
    m
    log
    OpenSLES
    aaudio
)

Step 5: Create Build & Execution Scripts Шаг 5: Создание скриптов сборки и запуска

Create batch scripts to configure, compile, and run the binary on an Android device or emulator via ADB: Создайте пакетные bat-скрипты для конфигурации, компиляции и запуска исполняемого файла на Android-устройстве или эмуляторе через ADB:

Windows (Batch Scripts)

config-android.bat

@echo off
set NDK=H:/AndroidSDK/ndk/28.2.13676358

cmake -G "MinGW Makefiles" ^
  -DCMAKE_TOOLCHAIN_FILE=%NDK%/build/cmake/android.toolchain.cmake ^
  -DANDROID_ABI=arm64-v8a ^
  -DANDROID_PLATFORM=android-26 ^
  -DCMAKE_BUILD_TYPE=Release ^
  -S . -B dist/android

build-android.bat

@echo off
cmake --build dist/android --config Release --parallel

run-android.bat

@echo off
set ADB=H:/AndroidSDK/platform-tools/adb.exe
set DEVICE_DIR=/data/local/tmp/miniaudio-test

echo [*] Creating target directory on device...
%ADB% shell "mkdir -p %DEVICE_DIR%"

echo [*] Pushing executable...
%ADB% push dist/android/app %DEVICE_DIR%/

echo [*] Setting permissions and executing...
%ADB% shell "chmod +x %DEVICE_DIR%/app"
%ADB% shell "%DEVICE_DIR%/app"

Make sure an Android device or emulator is connected (check with adb devices), then run the scripts sequentially in Command Prompt: Убедитесь, что Android-устройство или эмулятор подключены (проверьте командой adb devices), затем последовательно запустите скрипты в командной строке:

config-android.bat
build-android.bat
run-android.bat

Step 6: Expected Output Шаг 6: Ожидаемый результат

After running run-android.bat, the executable will run inside /data/local/tmp and you will see the active audio backend (modern Android devices using API 26+ use AAudio, and earlier versions fall back to OpenSL ES): После запуска run-android.bat исполняемый файл выполнится внутри /data/local/tmp, и вы увидите активный аудио-бэкенд (на современных устройствах Android с API 26+ используется AAudio, а на более ранних — OpenSL ES):

[*] Creating target directory on device...
[*] Pushing executable...
dist/android/app: 1 file pushed, 0 skipped. 134.0 MB/s (3436912 bytes in 0.024s)
[*] Setting permissions and executing...
miniaudio engine initialized successfully!
Active Audio Backend: AAudio

Support My Work Поддержать проект

If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.

Sberbank (Russia only) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp