Skip to content

Releases: malys/EVLauncher

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 08:12

EVLauncher v2.5.0

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Added

  • Dealer/Service mode on the EVSuite screen: one tap disables or re-enables the other EVSuite apps (never the launcher). Needs the signature-level CHANGE_COMPONENT_ENABLED_STATE; a refusal is shown, not silent.
  • Long-press an entry in the app drawer to jump straight to its Android app-info screen.

Unstable

Unstable Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 08:12

Unstable build 2026-10-02 08:12 UTC

Version 2.5.0.45 (run 45).

Automated build from master. Not tested on a vehicle.

Installed unstable builds update themselves from this channel. The updater
accepts an APK only over https from a GitHub host, and only if it is signed with
the same certificate as the running app — otherwise it deletes the file. Install
is still a manual tap.

The unstable id is com.evsuite.launcher.unstable, so it installs beside a
stable build. Both cannot be the default home at once — pick one in Android
settings.

Changelog

Added

  • Dealer/Service mode on the EVSuite screen: one tap disables or re-enables the other EVSuite apps (never the launcher). Needs the signature-level CHANGE_COMPONENT_ENABLED_STATE; a refusal is shown, not silent.
  • Long-press an entry in the app drawer to jump straight to its Android app-info screen.

Commit: 63c5c39

v2.4.1

Choose a tag to compare

@github-actions github-actions released this 17 Sep 08:11

EVLauncher v2.4.1

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Changed

  • Updated EVHardware to the shared master catalogue and telemetry implementation.

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 17:51

EVLauncher v2.4.0

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Removed

  • Twelve vehicle metrics that could never answer on this car: speed, cabin temperature,
    odometer, charge port, the four tyre pressures, and battery power / energy / capacity /
    temperature. Each is a standard AAOS property behind a car permission this launcher does not
    hold — and, for the dangerous ones it does declare, does not request at runtime either, so
    a manifest line was never a grant. They were offered on the argument that a dash saying
    unavailable on this car is an honest answer; on the vehicle it is noise, since nothing in
    the picker told the driver which entries can never fill in. EVTasker's diagnostic reports the
    same signals unreadable there, for the same reason. Reasoning:
    docs/CR-011-metrics-page.md.
  • The charging card's port-flag caption. It read EV_CHARGE_PORT_CONNECTED, which needs
    CAR_ENERGY_PORTS — held by no app in the suite — so the flag was never once non-null and
    the caption always fell back.

Changed

  • The picker now offers thirty-one metrics: the eighteen head-unit ones, unchanged, and
    thirteen vehicle ones that answer through the SAIC vendor services — charge, range, charging,
    outside temperature, the eight climate signals — plus the gear position, which EVHardware
    reads through the vendor condition manager rather than CarPropertyManager. None of them
    needs a car permission, which is why they work.
  • A metric card a driver had already chosen and that this build dropped is skipped on the next
    page build, as any unknown key already was. Nothing else on the page changes.

Car permissions are unchanged: still CAR_ENERGY and CAR_VENDOR_EXTENSION, read-only.

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 07:50

EVLauncher v2.3.0

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Changed

  • The system-information page and the vehicle page are now one customisable metrics page
    (MetricsFragment). Cards are added, replaced and removed with the same gestures as the
    favourite apps: tap the trailing + tile, long-press a card. Up to twelve cards over one
    to three rows. A fresh install shows the same seven values the two fixed pages showed.
    The carousel is two pages instead of three. Reasoning: docs/CR-011-metrics-page.md.

Added

  • Forty-three metrics in the picker, in two sections. Head unit: device, chipset, CPU
    load, memory, storage, network, IP address, data used today / this month / since boot,
    date, time, weather, uptime, Android version, kernel, screen, launcher version. Vehicle:
    every value of EVHardware's read-only snapshot — charge, range, charging, charge port,
    speed, battery power / energy /
    capacity / temperature, outside and cabin temperature, odometer, gear, the eight climate
    signals and the four tyre pressures.
  • The metric picker is a full screen (MetricPickerActivity) with a sectioned grid of
    touch-target-sized cells, replacing the list dialog the first cut used — forty entries in a
    dialog is the smallest touch target in the app.
  • The weather card, from the head unit's own weather service. It needs a position, so
    ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION are declared and requested at runtime the
    first time a weather card is displayed — never at launch. The position subscription is held
    only while the page is visible and only while a weather card is on it. Without the
    permission the card reads — and says so.
  • android.permission.PACKAGE_USAGE_STATS for the data-usage cards: read-only, device-wide,
    not a car permission. Car permissions are unchanged; vehicle signals behind one the launcher
    deliberately does not hold still read as — with unavailable on this car.

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 17:00

EVLauncher v2.2.0

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Added

  • EVChargePilot appears in the suite manager. The read-only energy dashboard joins the
    fixed catalogue of suite applications, so the manager reports whether it is installed, which
    version, and offers the stable APK from its own GitHub releases. The catalogue stays an
    allowlist: adding an application is a code change here, never something a downloaded
    manifest can do.

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 09:24

EVLauncher v2.1.0

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Added

  • A third home page, showing what the car itself is doing. Swipe once more past the system
    information and the launcher shows state of charge, remaining range and charging state. It is
    a page of its own rather than three more cards beside the RAM and storage figures for two
    reasons: seven cards across the panel leaves about 253 dp each, which ellipsizes exactly the
    two numbers the page exists for, and the head unit's memory and the car's battery are not the
    same kind of fact. The reasoning, the wireframe and the rejected alternatives are in
    docs/CR-010-vehicle-page.md.
    A value the car does not report shows as —, never as 0, with a caption distinguishing
    "the vehicle layer is not answering" from "this car does not publish that one". Nothing is
    read while the page is off-screen, nothing is written to disk, and a driver who never swipes
    that far never binds the vehicle layer at all.
  • The suite's shared vehicle layer, as a submodule. EVHardware is now included as the
    :evhardware subproject and is the only way this app reaches the car. Clone with
    --recurse-submodules, or run git submodule update --init before the first build.

Security

  • Two read-only car permissions, and a test that keeps them the only ones.
    android.car.permission.CAR_ENERGY and android.car.permission.CAR_VENDOR_EXTENSION are the
    minimum the three displayed values need, and neither permits a write. CAR_SPEED,
    CAR_EXTERIOR_ENVIRONMENT and CONTROL_CAR_CLIMATE — all held by EVChargePilot — were
    deliberately refused: this page shows no speed, no outside temperature and no climate state,
    and the app that owns the home screen holds no permission whose name contains CONTROL.
    VehicleBoundaryTest now fails the build on a direct android.car reference, on a
    CarPropertyManager, on an EVHardware import outside the read-only telemetry surface, on
    sharedUserId, and on any car permission the boundary review did not name.
  • No now-playing card, and the reason is written down. Reading what another app is playing
    needs MEDIA_CONTENT_CONTROL (signature/privileged) or notification-listener access, which
    would let the launcher read every notification on the head unit. Both are far larger grants
    than a track title is worth, so media was left out rather than paid for with a permission.

Changed

  • AGP 9.1.1 / Gradle 9.3.1, compileSdk 36, and the Kotlin plugin is gone. Not
    housekeeping: AGP 9's built-in Kotlin compilation is what EVHardware/lib relies on, and it
    is the toolchain every other EVSuite app already runs. The launcher's own sources remain
    Java.

v2.0.4

Choose a tag to compare

@github-actions github-actions released this 22 Aug 15:50

EVLauncher v2.0.4

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

Changelog

Fixed

  • A suite update signed with the very same key could still be refused as "APK rejected:
    package or signature mismatch". The check read the archive's certificates from
    signingInfo alone and demanded set equality with the launcher's own: a head unit that
    fills only the legacy signatures array on an archive produced an empty set, and an
    installed app carrying a signing history could never match a single-certificate APK.
    The certificates of both are now collected from signingInfo and the legacy array,
    and the APK is accepted when it shares one of them — the rule Android itself applies to
    an update. A refusal now names the two short fingerprints so it can be reported.

v2.0.3

Choose a tag to compare

@github-actions github-actions released this 22 Aug 11:31

EVLauncher v2.0.3

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 07:40

EVLauncher v2.0.2

This build has no auto-updater and no silent installer. The EVSuite screen
checks allowlisted GitHub releases only after the user opens it, shows the
changelog, and exports verified APKs for manual installation.

Install

Copy the APK to a USB stick, open the car's Files app and tap it. Then set it
as the default home from Android settings.

Note

Signed with the EVSuite platform key. If you are coming from a build signed
with the old author key, uninstall the previous version first — Android refuses
an in-place update across a key change.