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>
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.
Install: copy the file (recommended)
- Copy the verified
QQQ-Mobile-1.0.4.apkto the device's Downloads folder. - Open Files, go to Downloads, and tap the APK.
- 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
- Open QQQ Mobile and enter the HTTPS server URL, then tap Connect.
- Sign in with the method the server shows.
- The device enrolls and shows a Device ID with status pending.
- A QQQ administrator reviews the device, sets its name and approves it in QQQ.
- 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
- Android Debug Bridge, installing and updating apps and enabling USB debugging: https://developer.android.com/tools/adb