android 8.0+ · no root

Your phone.
Your rules.

Rename apps, replace icons and change real system settings using actual Android APIs. When the system refuses a write, Chameleon says so instead of flipping a switch that quietly does nothing.

—downloads
—active devices
—devices total
—channel trips
where these numbers come from

What it actually does

Every control writes to a real system setting or calls a real framework service.

Rename anything

New app labels, applied as pinned launcher shortcuts. Works with every app that has a launcher entry.

Replace icons

A built-in vector icon set applied the same way, with your own label.

Two shade tiles

Dark theme and motion, both one tap from the notification shade. The dark tile flips the real system switch on Android 12 and up.

Motion and refresh

All three animation scales, plus a peak refresh rate lock. Zero makes the whole phone feel faster.

Font scale

Cycle the system font size without digging through display settings.

Brightness and timeout

Manual brightness, auto-brightness off, and a screen timeout you can cycle through.

Sound

Ringer mode plus media and ring volume, straight through AudioManager.

Night light

Display tint and colour temperature, on devices that expose them.

Lock screen buttons

Pinned shortcuts via ShortcutManager. Android gives no API to draw on the lock screen itself, so this is what genuinely exists.

Per-app shortcuts

Jump straight to an app's notification, language or info screen instead of hunting through Settings.

Device state

Wi-Fi, Bluetooth, battery saver, USB debugging and private DNS, read live and labelled honestly.

Status screen

Your key, the exact expiry, extensions left, permissions and what is installed. Every row read from a real API.

How the key works

One key, made fresh each time, tied to your phone.

Go to the channel

The app hands you off to YouTube and remembers that you left. Come back, and it notices.

Come back, get a key

On your return the app mints a key instantly. No copying, no browser, and it works offline.

Fresh every time

The key carries a nonce, so a renewal is a genuinely different key rather than the same thirteen characters handed back again.

Bound to your phone

It is derived from your device id, so it will not validate on another handset and cannot be shared.

Three days, extendable

Every key lasts three days and can be extended by a day, seven times over.

The honest limit

Only the channel trip is genuinely checked. YouTube exposes no subscription state to any app, so nothing here claims to verify one.

Updates, your call

Normal updates

The button reads latest.json and offers you the download if something newer exists. Nothing installs behind your back.

Mandatory updates

latest.json also carries a min_version. Raising it locks the app until it is updated, with an explanation rather than a silent brick.

Offline behaviour

If the manifest cannot be reached the gate fails open. A network problem never locks you out of your own phone.

Honest refusals

Some settings need privileged permissions Android will not hand out. Chameleon says "not permitted" instead of pretending.

If Android says "invalid package"

1. Truncated download

An interrupted download leaves a partial file that no longer parses. Delete it and download again; look for a leftover .crdownload.

2. A web page saved as .apk

A real APK starts with the bytes 50 4B 03 04 ("PK"). A web page starts with <!DOCTYPE.

3. Play Protect blocked it

Google flags unfamiliar sideloaded apps. Tap More details then Install anyway.

4. Signature mismatch

Only if an older Chameleon came from a different key. Uninstall first. Your key is bound to the device id, not the install.

Verify what you got

Every release publishes the SHA-256 of the asset in its notes.

Still stuck?

Install from the file itself rather than a chat app or downloader — those sometimes re-compress the APK and break the signature.

Get started

1

Download the APK and allow installs from your browser.

2

Open Chameleon. It asks for a key on first launch.

3

Come back from the channel and take your key. The clock starts.

Questions, answered

Does it need root?

No. It uses documented Android APIs: ShortcutManager for renames and icons, Settings.Global and Settings.System for values, AudioManager for sound, UiModeManager for the theme on Android 12 and up.

Can it really repaint another app's icon?

No, and any app saying otherwise is lying. Android does not let one app repaint another's icon. Chameleon creates a launcher shortcut with your label and icon, which looks identical in every launcher that honours pins.

Why does hibernation just open Settings?

Because PackageManager.setHibernated is hidden from the public SDK, so no app is allowed to call it. Rather than ship a switch that silently does nothing, the button opens the real system screen where the change can actually be made.

What happens when the key expires?

It is deleted from storage and the key screen returns. Visiting the channel again gives you a fresh three days.

How do extensions work?

Settings has an "extend +1 day" button, seven times, so a key can reach ten days. A new key resets the counter.

Can someone reuse my key?

No. It is derived from your device id and will not validate on another phone. The nonce inside it only makes each one different, it does not weaken that.

Is anything sent to a server?

Your device id and the signed link token, when you ask for a key. Plus a check-in that counts installs for the stats page. Nothing else. Your settings never leave the phone.

Questions, answered

The short answers, including the ones where Android says no.

Does it need root?

No. ShortcutManager for renames and icons, Settings.Global and Settings.System for values, AudioManager for sound, UiModeManager for the theme on Android 12 and up.

Can it really repaint another app's icon?

No, and any app saying otherwise is lying. Android does not let one app repaint another's icon. Chameleon creates a launcher shortcut with your label and icon, which looks identical in every launcher that honours pins.

Why does hibernation just open Settings?

Because it is hidden from the public SDK, so no app may call it. Rather than ship a switch that silently does nothing, the button opens the real system screen.

How do you know I subscribed?

We do not. YouTube offers no way for any app to confirm that, and finding out would mean reading your Google account. What is checked is that you left for the channel and came back.

Can someone else use my key?

No. It is derived from your device id and will not validate elsewhere. Worth knowing: the nonce is chosen on your device, so this is a weaker guarantee than a server-held key would be.

every question, answered properly

What's new

full release history
v1.4.0
  • Keys now carry a nonce, so every renewal hands back a genuinely different key instead of the same thirteen characters
  • One key again. The app hands you to the channel, notices when you come back, and mints your key on the spot with no network
  • The app checks whether YouTube is installed and tells you honestly that no app can confirm an actual subscription
  • New black, white and grey theme across the app and the site
  • New Status screen: key, exact expiry, extensions left, permissions, notifications and device state
  • Fixed the dark theme tile, which was silently doing nothing because it called an API this app never used
  • Second Quick Settings tile for motion, which makes the whole phone feel faster at one tap
  • Peak refresh rate and font scale controls
  • Per-app shortcuts into the real notification, language and info screens
  • Notifications, split into an alerting channel and a quiet one
  • Live stats page counting installs and downloads from their real sources
v1.3.2
  • Launcher icon redrawn and generated at every density, plus a themed monochrome layer
  • Signature scheme v3 added alongside v2
v1.3.1
  • Fixed the crashes on Tweaks and Lock screen
  • Mandatory-update gate driven by min_version
v1.3.0
  • New Tweaks screen, adaptive icon, signed link tokens, redesigned interface