Skip to content

Building

Bilawal Riaz edited this page Oct 6, 2026 · 1 revision

Build from source

What you need

  • JDK 17.
  • The Android SDK with platform 36 and build tools 36.
  • The ANDROID_HOME environment variable set to the SDK directory, or a local.properties file with sdk.dir.

Build the debug app

./gradlew assembleDebug

The APK lands at app/build/outputs/apk/debug/app-debug.apk.

Install it on a connected phone with:

adb install -r app/build/outputs/apk/debug/app-debug.apk

Compile the test sources

There are no unit tests yet, and the instrumented sources need an emulator to run. CI compiles them so they cannot rot:

./gradlew assembleDebugAndroidTest

Versions

The build uses Gradle 9.5, Android Gradle Plugin 9.3.1, Kotlin 2.3.20, and Jetpack Compose through the Compose BOM. Every version is in gradle/libs.versions.toml.

Release a version

Tags drive releases. Push a tag such as v1.0.1 and the release workflow builds a signed APK and attaches it to a GitHub Release, with a SHA-256 file next to it. The version name comes from the tag and the version code from the workflow run number.

The signing key is not in the repository. It comes from four repository secrets, and docs/RELEASING.md explains how to create it and how to set the secrets.

Regenerate the icons

The app ships only the Material Symbols glyphs it draws, and tools/generate_android_icons.py generates them into app/src/main/java/com/bilawalriaz/pocketwiki/ui/icons/PocketIcons.kt. Run it only when the icon list changes:

python3 tools/generate_android_icons.py

Clone this wiki locally