Skip to content

Building from Source

K M Rejowan Ahmmed edited this page Oct 25, 2026 · 1 revision

Building from Source

Requirements

Version
Android Studio a recent stable release
JDK 21 (Android Studio's bundled JetBrains Runtime works)
Gradle 9.8.0, through the wrapper
Android Gradle Plugin 9.4.1
Kotlin 2.4.20
Compile / target SDK 37
Minimum SDK 24 (Android 7.0)

Getting the code

git clone https://github.com/ahmmedrejowan/PdfReaderPro.git
cd PdfReaderPro
git checkout feature

Development happens on feature; master holds what was last merged for release. Open the project in Android Studio and let Gradle sync.

Building

./gradlew assembleDebug

The APK is written to app/build/outputs/apk/debug/. If you build from a terminal and Gradle complains about the Java version, point JAVA_HOME at a JDK 21, for example Android Studio's bundled runtime:

export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

Checking your changes

These are the same checks CI runs on every pull request:

./gradlew testDebugUnitTest      # unit tests
./gradlew lintDebug              # Android lint, must have no errors
python3 .github/scripts/check_translations.py   # every language against English

Instrumented tests run on a device or emulator:

./gradlew connectedAndroidTest

Continuous integration

.github/workflows/ci.yml runs on pull requests into feature and master and on pushes to master:

  • Translations: check_translations.py, in seconds, with annotations pointing at the exact string.
  • Lint, Test & Build: validates the Gradle wrapper, then lint, unit tests and a debug build. Each Gradle step runs under a watchdog with time limits, so a stuck build fails instead of hanging.

Releases

Releases are built by .github/workflows/release.yml; see Contributing.

Clone this wiki locally