Notable changes in version 15:
- improve password protected PDF UI
- switch to Material You dynamic theme support
- improve integration into system UI
- add Android 13 themed icon support
- use document activity launch mode to allow viewing multiple documents in separate activities at the same time when opened from another app like the system file manager
- build with API 33 SDK
- raise target API level to 33
- update Android build tools to 33.0.0
- remove unused and duplicate icons/strings
- modernize code by replacing deprecated APIs/attributes, fixing lint warnings, etc.
- update pdf.js library to 2.16.105
- update Material library to 1.6.1
- update AndroidX appcompat library to 1.5.1
- update Gradle to 7.5.1
- update Android Gradle plugin to 7.3.0
- update Kotlin Gradle plugin to 1.7.20
A full list of changes from the previous release (version 14) is available through the Git commit log between the releases.
Simple Android PDF viewer based on pdf.js and content providers. The app doesn't require any permissions. The PDF stream is fed into the sandboxed WebView without giving it access to content or files. Content-Security-Policy is used to enforce that the JavaScript and styling properties within the WebView are entirely static content from the apk assets. It reuses the hardened Chromium rendering stack while only exposing a tiny subset of the attack surface compared to actual web content. The PDF rendering code itself is memory safe with dynamic code evaluation disabled, and even if an attacker did gain code execution by exploiting the underlying web rendering engine, they're within the Chromium renderer sandbox with no access to the network (unlike a browser), files, or other content.
This app is available through the Play Store with the app.grapheneos.pdfviewer.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.
Releases of the app signed by GrapheneOS with the app.grapheneos.pdfviewer
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.
Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.