Files
qqq-android/docs/INSTALLATION.md
T
james.maesandClaude Fable 5.2 b1912cf59c
android / android (push) Failing after 4m1s
build / android (push) Failing after 4m1s
fix(network): raise the remaining short limits for slow links (1.0.5, versionCode 7)
1.0.4 gave the metadata load 60 seconds. Every other call still had a
5 second call limit or OkHttp's 10 second defaults, so a slow warehouse
link could still fail start-up, enrollment or a process step.

All limits now come from one set, NetworkTimeouts:
- connect 10 s (unchanged value, now named)
- small calls 30 s: version discovery, branding, logo, reachability and
  the session heartbeat (were a 5 s call limit); device enrollment and
  status, sign-in, table and process-status calls (were a 10 s read)
- process init and step 60 s read and write, no call limit as before
- metadata load 60 s (unchanged)
- best-effort calls 5 s (unchanged): ending the device session and live
  screen frames, so sign-out, Change server and screen viewing never
  wait on a dead link

Not changed: the 3 s bounds around sign-out and the 30 s photo transfer
limit.

Tests assert the configured limits of every client (NetworkTimeoutsTest,
SlowLinkTimeoutsTest); the test that pinned the 10 s default now expects
an ordinary call to survive a 12 s answer.

Docs: CHANGELOG 1.0.5 candidate; RELEASING, INSTALLATION, SESSION-STATE
and TODO record the published 1.0.4 and the 1.0.5 release steps.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-09 19:35:59 -06:00

6.2 KiB

Installing QQQ Mobile directly

Use this for the production-signed APK on a small number of devices. Move to MDM later (see RELEASING). Automated scanner-APK signing/publication is not configured; that is not a blocker to direct installation.

This guide is not the local demo. The demo uses the development-signed debug APK, plain HTTP and adb reverse port forwarding to a workstation server; see README. The two builds have different signers and cannot update each other.

Current release status (November 9, 2026): the latest published build is 1.0.4 (versionCode 6) below, a Gitea prerelease. It updates 1.0.3, 1.0.2, 1.0.1 and 1.0.0 in place. A 1.0.5 (versionCode 7) candidate with longer network limits for slow links is prepared but not signed or published (see RELEASING). When a newer version is published, use the file, checksum and link on its release page, and verify the same signer.

Details and qualification status: RELEASING.

Item Value
Source Release scanner-v1.0.4 (prerelease; downloads without sign-in)
File QQQ-Mobile-1.0.4.apk (15015419 bytes), with SHA256SUMS, INSTALL.md and RELEASE-NOTES.md on the same release page
Application ID io.qrun.mobile.scanner
Version 1.0.4, versionCode 6
APK SHA-256 F643872F4435B55F6A0B929D1762CAACB18010E5CC0B473C7B4BABBDC4299489
Signing certificate SHA-256 BDDB2D2F45A5925C643A83ABAF616C1EAB2387DC5CDA7B645A6F4C0D5B17A9FF

The same APK is used for every customer; branding comes from the server at runtime. Download the APK and SHA256SUMS from the release page and compare the SHA-256 before installing, then verify the signing certificate matches the value above. The checksum shows the file is intact, not who signed it. This is a prerelease, not a stable release. Earlier releases: scanner-v1.0.2 and the signed preview scanner-v1.0.0 (QQQ-Mobile-1.0.0.apk, SHA-256 EE5AC896B8985AF6F11B2E883955925D6571A2913D74A4AACCDB564B79394D51).

Device evidence (1.0.0 and 1.0.1; 1.0.4 had not been installed on a device when it was published). Historical (November 4): the 1.0.0 APK was installed and launched once on a fresh Zebra MC9400 (Android 13) and showed the Connect screen; it was not yet enrolled. Current (November 5): with the user's explicit authorization, the MC9400 was migrated: 1.0.0 enrollment over trusted HTTPS passed, then an in-place 1.0.1 update preserved login and enrollment. Apps/ScanCapture navigation and EMDK Scanner-ready were observed, and the operator confirmed a physical Saved scan that the backend verified. These checks are done and need not be repeated for this device. The 1.0.1 candidate is still unpublished, native Authentik login/logout/account switching is not yet qualified with the production APK, and the TC22 keeps its original development-signed installation.

Before you start

  • The device is connected to Wi-Fi.
  • You have a customer HTTPS QQQ server URL with a trusted certificate that the device can reach. Release builds reject HTTP, and certificate checks must not be weakened. Use the address you are given (https://<your-server>); do not guess one. Local-network qualification used a temporary private network and is not a customer deployment.
  • You have the QQQ credentials for the sign-in the server offers. None are in this guide.
  1. Copy the verified QQQ-Mobile-1.0.4.apk to the device's Downloads folder.
  2. Open Files, go to Downloads, and tap the APK.
  3. If Android asks, allow that Files app to install apps, then continue. You can turn the permission off again afterward.

Install: USB debugging (alternative)

Requires USB debugging enabled on the device, a computer the device has been asked to trust, and Android Platform Tools.

adb devices
adb -s DEVICE_SERIAL install -r QQQ-Mobile-1.0.4.apk
adb -s DEVICE_SERIAL shell dumpsys package io.qrun.mobile.scanner | findstr /i "versionName versionCode"

The last command confirms the installed version (expect versionCode=6 and versionName=1.0.4).

Replace DEVICE_SERIAL with the serial of the device you chose from adb devices. Always name the target with -s. Do not add -d (downgrade) or -t.

First launch and enrollment

  1. Open QQQ Mobile and enter the HTTPS server URL, then tap Connect.
  2. Sign in with the method the server shows.
  3. The device enrolls and shows a Device ID with status pending.
  4. A QQQ administrator reviews the device, sets its name and approves it in QQQ.
  5. On the device, tap Check approval, then open the server's apps (Apps).

Grant location when Android asks; scanning works without it. Zebra devices with EMDK need no DataWedge profile set up by hand (Zebra scanning).

Confirm the first new install

On the first device of a new customer deployment, check each of these (already done for the MC9400 qualification above):

  • The footer shows Connected.
  • One scan is captured and the server keeps it (Saved scan).
  • Navigation to Apps and back works.
  • Echo: choose the printer, document and copies once. The server does the printing.

Printer clients belong on the server side. No printer driver goes on the scanner.

Updates

For a later build signed by the same key with a higher versionCode, run the same adb -s DEVICE_SERIAL install -r QQQ-Mobile-<version>.apk command. Data is preserved.

Devices running the development-signed build

Devices running the development-signed demo build (the TC22) cannot be updated by this APK, because the signer differs. Android is expected to refuse the install. This is not a fault: do not uninstall the app or reset the device to get around it. Moving that device needs an explicitly authorized, planned one-time migration that includes re-enrollment.

References