rallista/valhalla-mobile
This project builds [valhalla](https://github.com/valhalla/valhalla) as a static iOS or shared Android library.
Setup
Android
Using a libs.versions.toml with a build.gradle.kts
[verisons]
valhallaMobile = "0.1.0"
[libraries]
valhalla-mobile = { group = "io.github.rallista", name = "valhalla-mobile", version.ref = "valhallaMobile" }implementation(libs.valhalla.mobile)Using a standard build.gradle.kts
implementation("io.github.rallista:valhalla-mobile:0.1.0")Using a standard build.gradle
implementation 'io.github.rallista:valhalla-mobile:0.1.0'iOS
In a swift package:
let package = Package(
dependencies: [
.package(url: "https://github.com/rallista/valhalla-mobile.git", from: "0.1.0"),
],
targets: [
.target(
dependencies: [
.product(name: "Valhalla", package: "valhalla-mobile")
]
),
]
)Manually Building Valhalla C++
Fetching submodules
git submodule update --init --recursiveSet up VCPKG
git clone https://github.com/microsoft/vcpkg && git -C vcpkg checkout 2025.12.12
./vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=`pwd`/vcpkgiOS Swift Package
On iOS, you must pre-build the xcframework using the command:
./build.sh ios cleanAndroid
Prerequisites: See development.md, specifically setting up NDK 29.0.14206865 to match CI.
The project's build.gradle.kts includes a build task that automatically runs the script below selectively per architecture. It's also possible to run this manually:
./build.sh android cleanValhalla Fork
This project uses our fork of valhalla at <https://github.com/Rallista/valhalla> as a submodule. If a feature is missing, please open an issue or PR on that repository to upgrade it to valhalla's latest version.
References
- Valhalla <https://github.com/valhalla/valhalla>
- Swift Package Manager C++ (for fun - this repo takes the old approach) <https://www.swift.org/documentation/articles/wrapping-c-cpp-library-in-swift.html>
Package Metadata
Repository: rallista/valhalla-mobile
Default branch: main
README: README.md