Skip to content

Birdo Android android-v1.4.34

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:49
android-v1.4.34
899f4c3

Birdo VPN - Android sideload build

Build: android-v1.4.34
Commit: 899f4c329ecfee667c2540c05a5e1adb2013ec2b

Install

Download the .apk asset below on your Android device and tap it to install.
The .aab asset is the Play Console upload artifact.
You may need to enable Install unknown apps for your browser / file manager.

Verify (optional)

Source of the Stealth Mode engine (libxray.so)

xray-core-*-corresponding-source.tar.gz is the complete corresponding source of
libxray.so, the unmodified Xray-core program (MPL-2.0). It contains:

  • Xray-core-<version>.tar.gz: git archive of the pinned Xray-core commit (its git tree is
    XRAY_SOURCE_TREE in scripts/provision_xray_engines.sh);
  • go-modules/: the proxy.golang.org zip of every Go module the four engines link, GPL-3.0,
    LGPL-3.0, MPL-2.0 and permissive alike, at the exact versions shipped (each SHA-256-pinned and
    checked against Xray-core's go.sum and the engines' build info);
  • go-toolchain/<go version>.src.tar.gz: the Go source distribution (standard library and
    runtime, which every engine links) of each toolchain that built a shipped engine, byte for byte
    from go.dev and checked against the SHA-256 go.dev publishes: go1.25.7 for the two upstream
    engines, go1.25.14 for the two BirdoVPN builds;
  • provision_xray_engines.sh, the script that fetched two engines and built the other two;
  • README.txt: every file's SHA-256 and licence, and how each engine was made (the upstream XTLS
    asset, or the Go toolchain, Android NDK revision and exact go build command).

The same file is published, never as a draft, at the release tagged
xray-source-android-v1.4.34; the app's licence notices link there. Its SHA-256 is in
SHA256SUMS.txt.

This is a draft release - not visible to the public until you click "Publish".

What's Changed

  • feat(ios): owner decisions 2026-10-01 - deletion order + 2FA + SIWA, re-consent, no pre-consent requests, Custom DNS for all, macOS UA by @1Birdo in #455
  • ci: GitHub "Latest" follows Google Play's 100% production release by @1Birdo in #454
  • chore(deps): Gradle 9.8.0, Sentry 8.58.0, androidx patch bumps by @1Birdo in #456
  • fix(ios): the WireGuard port is not a choice; 53 and custom ports never connected (LIVE-PORT53) by @1Birdo in #457
  • ci: rebuild GitHub Actions — parallel Android CI (median 32 → ~14 min), cache-free releases, PR-scoped secret scan, iOS tests on PRs by @1Birdo in #464
  • ci(secret-scan): list the two overhaul/android fixture commits on main too by @1Birdo in #460
  • build: pin the Gradle distribution's SHA-256 in the wrapper by @1Birdo in #459
  • Android client overhaul: connection reliability, private API path (D-6), Always-on, UX and accessibility to the iOS standard by @1Birdo in #458
  • Android: visible kill-switch failure, tracked probe thread, Stealth fail-closed, one prefs owner (stacked on #458) by @1Birdo in #463
  • chore(secret-scan): drop the two #458 branch commits from the allowlist by @1Birdo in #465
  • chore(contract): re-vendor vpn-protocol.schema.json from birdo-web 43176281 (#599) by @1Birdo in #466
  • release: Android v1.4.33 (internal-track test build) by @1Birdo in #468
  • ci(baseline-profile): wait for udev before testing /dev/kvm by @1Birdo in #467
  • perf(startup): refresh the baseline profile from the monthly CI recording by @1Birdo in #469
  • ci: bound apt-get so a stalled Ubuntu mirror fails in minutes by @1Birdo in #470
  • Session and reconnect edges from the #463 reviews: reapply during a switch, offline switch, logout refresh replay, sign-in token lock by @1Birdo in #472
  • fix(android): IP/location off in notifications by default; no title prefix; honest Stealth banner by @1Birdo in #471
  • fix(android): app cover that nothing stacks above (MR-937), refused widget-tap alert (MR-938), #472 follow-ups by @1Birdo in #474
  • fix(listing): 4-day PITR sentence, Always-on line, 1.4.33 what's new by @1Birdo in #473
  • fix(android): register quick fixes 2026-10-08 (external offers deleted, GPL wg tools out, PQ comments, globe/login decisions) by @1Birdo in #477
  • chore(pins): re-vendor cert-pins.json - dns.google and dns.quad9.net retired (birdo-shared #20) by @1Birdo in #475
  • docs(vpn-service): the per-connect PQ-PSK is not "the same HNDL guarantee" by @1Birdo in #478
  • chore(deps): bump androidx.browser:browser from 1.9.0 to 1.10.0 in the androidx group across 1 directory by @dependabot[bot] in #476
  • docs(ios): BirdoPQ threat model - a stolen key does derive past PSKs; not HNDL-complete by @1Birdo in #479
  • fix(android): retry psk_delivery_unavailable by code, decode unknown error codes to a fallback (MR-1639) by @1Birdo in #481
  • fix(android): redact every credential-bearing model's toString; #477 review nits (MR-1870, MR-1871) by @1Birdo in #480
  • fix(ios): decode the retryable 503s by code and honour retryAfterSeconds (MR-1948) by @1Birdo in #482
  • fix(mobile): licence notices, Swift credential redaction, iOS 426 + parity rows (12 register rows) by @1Birdo in #484
  • fix(mobile): Multi-Hop globe, per-install Apple identity, 50 GB free cap from server data, real kill-switch chip + #484 review follow-ups by @1Birdo in #485
  • MR-1707 permanence line + credential guard follow-ups (Android scanner, iOS snapshot/cover/guard) by @1Birdo in #486
  • Mobile batch D: MR-1707 wording, free cap from client-config (MR-1980), iOS anonymous-number leftovers (#485), isSignedIn order (#486), Xray corresponding source per release (L1) by @1Birdo in #487
  • fix(ios): Protected only after the handshake; explicit kill-switch excludes; host-only keychain group with migration (MR-974, MR-1728, MR-1729) by @1Birdo in #488
  • fix(android): one OkHttp version: align dnsoverhttps/logging with the resolved core; drop the unused Ktor from :shared (MR-2092) by @1Birdo in #489
  • chore(deps): bump the codeql group across 1 directory with 2 updates by @dependabot[bot] in #492
  • fix(mobile): Mac screenshot job can fail, drop the unused :shared Apple framework, one masking rule, redaction in the tunnel extension, IPv6 D-6 on v4-only nodes, route-contract review (MR-1797, 1085, 1362, 2044, 949, 953) by @1Birdo in #490
  • fix(ios): Face ID/Touch ID wording says what the gate does; drop the Quantum chip from Home; heartbeat contract cases (MR-1094, MR-1518, MR-1638) by @1Birdo in #497
  • fix(android): retry tunnel_address_unavailable; lock-screen actions need unlock on Android 10/11; server-list switching state (MR-2058, MR-1725, MR-945) by @1Birdo in #498
  • chore(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #493
  • ci(mobile): tests gate the Mac upload, pinned tooling, Apple CI on every PR, cert-pin step fails in the window, androidTest decision (MR-2102, MR-2060, MR-1802, MR-1669, MR-1410) by @1Birdo in #491
  • chore(deps): bump the okhttp group across 1 directory with 3 updates by @dependabot[bot] in #494
  • chore(deps): bump gradle-wrapper from 9.8.0 to 9.8.1 by @dependabot[bot] in #496
  • chore(deps): sentry-android 8.60.0 with the non-deprecated way to keep personal data out of crash reports by @1Birdo in #499
  • chore(pins): re-vendor cert-pins.json from birdo-shared 9c64a059 (MR-1862 ACM lock) by @1Birdo in #501
  • chore(store): regenerate Play/F-Droid screenshots from the current UI with a fresh test account; no account number on any image (MR-1181, MR-037) by @1Birdo in #502
  • fix(mobile): post-quantum key hand-off, stored-pair check and secret wiping; WireGuardKit RNG outside assert; iOS purchase resume waits for the plan (MR-2117, MR-2121, MR-2122, MR-2123, MR-2112, MR-2118, MR-2119, MR-2120) by @1Birdo in #503
  • release: Android v1.4.34 by @1Birdo in #506

Full Changelog: android-v1.4.32...android-v1.4.34