DNDReader for Android

An app file (.apk) for Android 8.0 or newer. It isn't on Google Play, so you install it from the file, and Android will ask for your permission before it does.

Download DNDReader for Android

Download for Android Version 0.3.0 · 24.9 MB
File
DNDReader-0.3.0-arm64-v8a.apk
Size
24.9 MB (24,858,225 bytes)
Published
19 October 2026
Needs
Android 8.0 or newer

The main file is for arm64-v8a, which is almost every phone and tablet made since about 2017. A browser can't tell which processor your phone has, so this is the sensible default rather than a certainty. The other files are listed below for older phones and emulators.

Other files for Android (most people don't need these)

Tested on one phone (Moto G60, Android 12) and an Android 16 emulator. Not yet tested: Android 13 or newer on a real phone, TalkBack, a Bluetooth keyboard, mouse or stylus, split screen, and a very old or missing system WebView. The armeabi-v7a file builds but has never been run on a device.

Install

  1. Download the file

    Your browser may say a file like this can harm your device. Browsers say that about every app file, because an app file can install anything. It is a reason to be sure the file came from this page, not a judgement on this particular file.

  2. Open it

    When the download finishes, open it from your browser's notification or from the Files app.

  3. Android asks whether this app may install apps

    Android only lets an app install other apps if you have allowed that app to. You will be told your phone isn't allowed to install unknown apps from this source, and offered Settings. The permission belongs to one app (your browser, or Files). It allows that app to install other apps, and you can switch it off again afterwards, usually under Settings, Apps, Special app access, Install unknown apps.

    Allow it only if you are happy with where the file came from. Checking the file (below) is how you find out.

  4. Google Play Protect may have something to say

    Play Protect may scan the app or show a message about it. If it blocks the installation, stop there and don't work around it. Please open an issue so it can be looked at.

  5. Open DNDReader

    Open it from your apps. To read a PDF, pick one from the picker, or in another app choose Share or Open with and pick DNDReader. Press and hold a word, drag the handles, then choose Find meaning.

Check the download

Check that the file is the one published, and signed by this project (optional; needs a computer)

A checksum is a fingerprint of a file. If the one you calculate matches the one published here, the file arrived complete and unaltered.

Published SHA-256 for DNDReader-0.3.0-arm64-v8a.apk
61c26309ab37d4598eb1944b4fe92f65d18f29b985a093be57ba5fd8467e3788
Published SHA-256 for DNDReader-0.3.0-armeabi-v7a.apk
4e215a1c9542fca632761834cda5d85186cd237e4974f9cefd0cd36611d8f5a5
Published SHA-256 for DNDReader-0.3.0-x86_64.apk
1771ea8ac498bd275b5a1a53922b2354d9af4e58bfc2b20d3146aa9e809ccb56
Run on a computer (Linux or macOS), in the folder with the file
sha256sum DNDReader-0.3.0-arm64-v8a.apk

Use the name of the file you downloaded; the published number for each file is above. On Windows, use Get-FileHash in PowerShell.

Compare the result with the published number. Every character must match; capital and lower-case letters don't matter. Windows prints capitals.

A matching checksum shows the file is the one published, intact. It can't show the release itself is trustworthy, because the file and its number come from the same place. The signature check below goes further.

The signature check

Every DNDReader APK is signed with the project's release key. A signature proves more than a checksum: it shows the file came from whoever holds that key, not just that it arrived intact. The Android SDK's apksigner tool prints the key's fingerprint.

Run on a computer with the Android SDK build-tools
apksigner verify --print-certs DNDReader-0.3.0-arm64-v8a.apk

Look for the digest, not the label. The line that matters is the one that says certificate SHA-256 digest. Its label differs between tool versions: build-tools 36 prints Signer #1 certificate SHA-256 digest:, and build-tools 37 prints V2 Signer: certificate SHA-256 digest:. Read the number after the colon.

Expected certificate SHA-256 (as in the release notes)
90:B1:F8:9D:69:CA:9F:26:14:0A:AC:C9:DC:B2:A8:A5:BF:49:43:97:F1:BF:E1:99:A1:26:02:7F:A7:17:D9:36
The same fingerprint as apksigner prints it, with no colons
90b1f89d69ca9f26140aacc9dcb2a8a5bf494397f1bfe199a126027fa717d936

Colons and capital letters don't matter; the digits must match. If they don't, don't install the file and open an issue. Android also enforces this on updates: an update signed with a different key will not install over this app.

Good to know on Android

DNDReader opens a copy of each PDF, not the original

Android doesn't give apps lasting paths to your files, so DNDReader copies each document into its own private storage when you open it (the eight most recent, plus the open one) and reads the copy. Changes to the original don't appear until you open or share the file again. Copies that leave the recent list are deleted, and uninstalling removes them all. Files over 1 GB are refused.

Memory use is higher than the target

With a 240-page PDF open and the search panel's browser alive, DNDReader used about 517 MB on the test phone, against a 300 MB target we set and missed. Reading without searching used about 250 to 280 MB.

DNDReader asks for one permission, Internet, which the search panel needs. It asks for no storage permission: documents arrive through the Android picker or the apps you share from. What the panel stores, and when it is deleted, is under What stays on your device.

If something goes wrong

  • Android says "App not installed", or that the app isn't compatible. The file may not match your phone's processor. Try the armeabi-v7a file only if your phone is an older, 32-bit one. The x86_64 file is for emulators.
  • The download didn't start or was blocked. Look for a prompt in your browser, then use Download it again from the panel above.
  • Play Protect blocked it. Stop, and open an issue.
  • The signature or checksum doesn't match. Don't install it. See "Check the download".
  • Anything else. Open an issue and say what you saw.

Uninstall

Open Settings, then Apps, choose DNDReader, then Uninstall. This also removes the private copies of your documents.

Next