Skip to content

Chromium Extend v1.3

Pre-release
Pre-release

Choose a tag to compare

@Shshtwy Shshtwy released this 17 Aug 16:54

A de-Googled build of Chromium Desktop Android that keeps browser extensions and video
playback working.

Built from Chromium 153.0.7999.0 (commit 945b5115) with twenty-three patches and five build
flags.

New in v1.3

Downloads can be handed to a download manager app

  • A new setting under Settings, Downloads: Use an external download manager
  • When enabled, a download opens a chooser offering any installed download manager, such as 1DM
  • Off by default, so the browser downloads files itself exactly as before until you turn it on
  • Chromium is filtered out of the chooser, so it cannot be offered as a destination for its own
    download
  • If no download manager is installed, the browser downloads the file normally rather than
    failing

The build is now verifiably reproducible

  • Building the same source twice produces a byte-identical APK
  • Verified three ways: a clean six-hour build from nothing, an incremental build carrying a full
    day of history, and the APK already installed on the development device
  • The output directories had different names, which is the case most likely to leak a build path
    into a binary
  • This release publishes a SHA-256 that was confirmed against a clean rebuild, rather than a hash
    generated alongside the upload

Nothing else changed. Patches 0001 through 0021 are identical to v1.2.

Screenshots

Left: the new setting, with its limitation stated in the summary. Right: the chooser it
produces, downloading this release's own APK.

Verifying this release

SHA-256  195776690f93e2e4cf38894adc07ec136810d39db9197c44b7da0884fb492d48

To confirm the binary matches the source rather than trusting it:

  1. Check out Chromium at base commit 945b5115
  2. Apply the series with git am patches/*.patch
  3. Use the args.gn documented in the README
  4. Run gn gen out/<name> && autoninja -C out/<name> -j 12 chrome_public_apk
  5. Compare sha256sum out/<name>/apks/ChromePublic.apk against the hash above

Two things this does not yet prove, stated plainly:

  • Reproducibility has been confirmed within one container image. A rebuild on different hardware,
    or in a container built at a different time, has not been tested. The Dockerfile installs
    packages with apt-get and so drifts over time, though Chromium ships a hermetic toolchain
    through DEPS, which should make the host package set irrelevant.
  • If your rebuild produces a different hash, please open an issue. That is the missing
    measurement, and a report would be genuinely useful.

What you get

  • Real browser extensions. Password managers, ad blockers, dark mode, the same extensions you
    would use on a desktop. Upstream exposes this only at tablet widths; here it works on a phone.
  • DuckDuckGo by default. The shipped default on a new profile, and the new tab page follows
    it.
  • No sign-in surfaces. No settings row, no Google services page, no first-run screen, no new
    tab page promo cards, no avatar button.
  • No Gemini. The bottom bar button is gone, and it cannot be added back from Settings.
  • Links open in the browser, not handed off to whichever app claims the domain.
  • Video that behaves. Ordinary and paid streaming both play. Fullscreen respects your
    rotation lock, fills the screen properly, and keeps its controls on the video.
  • Security kept deliberately. Protections against fake certificates and downgraded
    connections remain.

Install

Requires an arm64 Android device, Android 10 (SDK 29) or newer.

adb install -r ChromiumExtend-v1.3-153.0.7999.0-arm64.apk

Or copy the APK to the device and open it, allowing installation from unknown sources.

Signed with a local debug key, so it will not upgrade over a Play Store Chrome or Chromium
install. It installs as its own app, org.chromium.chrome, and upgrades cleanly over v1.0
through v1.2.

Upgrading from an earlier version keeps Google as the search engine. Chromium stores the
chosen engine per profile and prefers it over the shipped default, so only a fresh install gets
DuckDuckGo. Change it under Settings, Search engine.

Known limitations

  • External downloads lose your sign-in. With the new setting on, a file requiring you to be
    signed in will fail in the other app. The interception point carries no cookie, and passing
    credentials needs a different layer.
  • The DuckDuckGo default applies to new profiles only. See the install note above.
  • Passkeys do not work. FIDO2_PRIVILEGED_API is restricted to Google-signed browsers, so
    any self-built Chromium is refused. Inherent to self-building, not caused by these patches.
  • Web Push is gone, as a consequence of removing the Google Cloud Messaging channel.
  • Manifest V2 extensions are not supported. Upstream removed both the manifest support and
    the renderer bindings the extensions rely on. Re-enabling only the manifest check causes
    renderer crashes, so it was tried and reverted. Use uBlock Origin Lite rather than uBlock
    Origin.
  • Extension popups can be cropped, since extensions size their popup to content and may
    request more width than a phone has.
  • The omnibox is squeezed when several extensions are pinned.
  • The New Tab Page still has an AI Mode button and Discover.
  • Widevine is detected, but protected playback has not been exercised end to end.

License

BSD-3-Clause. The patches modify Chromium source and are subject to Chromium's license.
Chromium is a trademark of Google LLC. This project is unaffiliated.