2026-08-07 19:44:11 +02:00
2026-08-21 19:56:04 +02:00
2026-08-06 00:24:24 +02:00
2026-08-07 19:44:11 +02:00
2026-08-14 03:14:14 +02:00
2026-08-02 10:50:01 +02:00
2026-07-26 12:13:25 +02:00
2026-07-14 15:46:03 +02:00
2021-01-19 14:48:14 -08:00
2026-08-21 19:56:04 +02:00

ndkports

Pre-built Android AARs for popular C/C++ libraries, cross-compiled for all ABIs and packaged for Prefab.

Hosted at maven.doomhowl.com — browse available artifacts in the Reposilite web UI.

Available libraries

Library Maven coordinate Prefab module Header-only
Boost 1.87.0 org.boost:boost:1.87.0-SNAPSHOT boost (header-only umbrella), plus compiled modules filesystem, thread, atomic, chrono, container, context, coroutine, fiber, date_time, regex (header-only), serialization, program_options, random, iostreams, log, log_setup, json, url, charconv, timer, type_erasure, wave, graph, stacktrace_noop, unit_test_framework, prg_exec_monitor, test_exec_monitor partial
Lua 5.4.5 com.walterschell:lua:5.4.5-SNAPSHOT lua_shared
sol2 3.3.0 com.thephd:sol2:3.3.0-SNAPSHOT sol2 yes
Raylib 5.6 com.raysan5:raylib:5.6-SNAPSHOT raylib
Raylib 5.6.1 (Doomhowl) com.doomhowl:raylib:5.6.1-SNAPSHOT raylib
Raygui 5.6.1 (Doomhowl) com.doomhowl:raygui:5.6.1-SNAPSHOT raygui
LunaSVG 3.1.0 com.sammycage:lunasvg:3.1.0-SNAPSHOT lunasvg, plutovg
FreeType 2.14.3 com.doomhowl:freetype:2.14.3-SNAPSHOT freetype
RmlUi 6.2 (Lua 5.4) com.doomhowl:rmlui:6.2-SNAPSHOT rmlui, rmlui_debugger, rmlui_lua
OpenSSL 3.2.1 com.doomhowl:openssl:3.2.1-SNAPSHOT ssl, crypto
curl 7.85.0 com.doomhowl:curl:7.85.0-SNAPSHOT curl
CPR 1.14.2 com.libcpr:cpr:1.14.2-SNAPSHOT cpr
Socket.IO 3.2.1 com.socketio:sioclient:3.2.1-SNAPSHOT sioclient, sioclient_tls
Protobuf 3.21.12 com.google.protobuf:protobuf:3.21.12-SNAPSHOT protobuf
GameNetworkingSockets 1.6.0 com.valvesoftware:GameNetworkingSockets:1.6.0-SNAPSHOT GameNetworkingSockets
TouchScrollPhysics 1.0.0 com.bramtechs:TouchScrollPhysics:1.0.0-SNAPSHOT TouchScrollPhysics (static)
magic_enum 0.9.8 com.neargye:magic_enum:0.9.8-SNAPSHOT magic_enum yes
xxHash 0.8.3 com.cyan4973:xxhash:0.8.3-SNAPSHOT xxhash
SDL3_image 3.4.4 org.libsdl:SDL3_image:3.4.4-SNAPSHOT SDL3_image
bgfx (bgfx.cmake 1.153.9398-566) com.doomhowl:bgfx:1.153.9398-SNAPSHOT bgfx, bx, bimg, bimg_decode, bimg_encode
kelcoro 0.96.0 com.doomhowl:kelcoro:0.96.0-SNAPSHOT kelcoro yes

All libraries are built for armeabi-v7a, arm64-v8a, x86, and x86_64. Minimum SDK is 21 (24 for CPR).

Usage

Gradle

settings.gradle.kts

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven("https://maven.doomhowl.com/releases")
    }
}

settings.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.doomhowl.com/releases' }
    }
}

build.gradle.kts

android {
    ndkVersion = "26.1.10909125"
    defaultConfig {
        minSdk = 21
    }
    buildFeatures {
        prefab = true
    }
}

dependencies {
    implementation("com.thephd:sol2:3.3.0-SNAPSHOT")
}

build.gradle

android {
    ndkVersion '26.1.10909125'
    defaultConfig {
        minSdk 21
    }
    buildFeatures {
        prefab true
    }
}

dependencies {
    implementation 'com.thephd:sol2:3.3.0-SNAPSHOT'
}

The sol2 package transitively provides the Lua 5.4.5 dependency and exports the lua_shared Prefab module.

CMakeLists.txt

cmake_minimum_required(VERSION 3.22.1)

find_package(sol2 REQUIRED CONFIG)

add_library(myapp SHARED myapp.cpp)
target_link_libraries(myapp sol2::sol2)

For header-only libraries like Boost:

find_package(boost REQUIRED CONFIG)

add_library(myapp SHARED myapp.cpp)
target_link_libraries(myapp boost::boost)

Boost's compiled libraries use the same module names as desktop Boost's own CMake config package, so consumer code looks the same as it would off-device:

find_package(Boost REQUIRED CONFIG)

add_library(myapp SHARED myapp.cpp)
target_link_libraries(myapp Boost::filesystem Boost::json)

The module name you pass to find_package is the Prefab module column from the table above.

Building locally

Requirements:

  • Android NDK 26+
  • CMake 3.22+
  • ADB (optional, for on-device tests)

Create local.properties:

sdk.dir=/path/to/Android/Sdk
ndkPath=/path/to/Android/Sdk/ndk/26.1.10909125
cmakeBinary=/path/to/cmake

Publish a port to the local repository (build/docs/):

./gradlew :lua:publish

To build a different port, replace :lua: with the project name (e.g. :raylib:, :boost:, :doomhowl:raygui:).

To publish to the hosted Reposilite instance, add credentials to ~/.gradle/gradle.properties:

reposiliteUsername=<token>
reposilitePassword=<secret>

Then run:

./gradlew publishAllPublicationsToReposiliteRepository
S
Description
No description provided
Readme
263 MiB
0 Stars 2 Watchers 0 Forks
Languages
Kotlin 81.5%
C 5.9%
Shell 4.9%
C++ 4.3%
CMake 3.4%