Repository navigation
Building from Source
| 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) |
git clone https://github.com/ahmmedrejowan/PdfReaderPro.git
cd PdfReaderPro
git checkout featureDevelopment happens on feature; master holds what was last merged for release. Open the project in Android Studio and let Gradle sync.
./gradlew assembleDebugThe 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"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 EnglishInstrumented tests run on a device or emulator:
./gradlew connectedAndroidTest.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 are built by .github/workflows/release.yml; see Contributing.
PDF Reader Pro is free and open source under the GPL v3. Found something wrong in this wiki? Open an issue or ask in Discussions.
Using the app
- Installation
- Getting Started
- Reading PDFs
- Bookmarks, Highlights and Signatures
- PDF Tools
- Settings
- Languages and Translation
- Accessibility
- Troubleshooting and FAQ
- Privacy
Working on the app
Links