blob: ddbe624a0e8e20d2fa52811948fc4ef41945d17d [file] [log] [blame] [view] [edit]
# ndkports
A collection of Android build scripts for various third-party libraries and the
tooling to build them.
If you're an Android app developer looking to *consume* these libraries, this is
probably not what you want. This project builds AARs to be published to Maven.
You most likely want to use the AAR, not build it yourself.
Note: Gradle support for consuming these artifacts from an AAR is a work in
progress.
## Ports
Each third-party project is called a "port". Ports consist of a description of
where to fetch the source, apply any patches needed, build, install, and package
the library into an AAR.
A port is a subclass of the abstract Kotlin class `com.android.ndkports.Port`.
Projects define the name and version of the port, the URL to fetch source from,
a list of modules (libraries) to build, and the build steps.
See the [Port class] for documentation on the port API.
Individual port files are kept in `ports/$name/port.kts`. For example, the cURL
port is [ports/curl/port.kts](ports/curl/port.kts).
[Port class]: src/main/kotlin/com/android/ndkports/Port.kt
## Building a Port
We recommend using the supplied scripts and Dockerfile for consistent builds.
To build a release for distribution to a Maven repo, `scripts/build_release.sh`
To build a snapshot, `scripts/build_snapshot.sh`
You can also pass custom gradle targets: `scripts/build_snapshot.sh curl`
The scripts use the standard `ANDROID_NDK_ROOT` environment variable to
locate the NDK. For example, `ANDROID_NDK_ROOT=/path/to/ndk scripts/build_release.sh`