Skip to content

Repository files navigation

Tendroid icon

Tendroid

Apple PosterBoard .tendies wallpapers, rendered as native Android live wallpapers.

Build Release Android 8.0+ Kotlin

Demo

The lock, AOD, and home states are driven by the source wallpaper's own CAML transitions.

Tendroid lock-screen transition demo

Community Gallery

Tendroid can browse the independently maintained Tendroid Gallery from inside the app. Catalog packages are size-bounded, restricted to the gallery repository, verified against their published SHA-256, and then processed by the same safe importer as local files.

Creators can submit handmade or AI-assisted wallpapers through a gallery pull request. Each submission contains a manifest, preview, and .tendies package, and must declare its author, source, redistribution rights, license, supported states, and minimum Tendroid build. See the submission guide.

What it does

  • Imports .tendies packages through Android's document picker.
  • Browses the independently maintained Tendroid Gallery, verifies each download, and imports it without leaving the app.
  • Renders layered CAML scenes with images, text, nested transforms, opacity, and masks.
  • Maps PosterBoard Sleep, Locked, and Unlock states to Android AOD, lock screen, and home screen.
  • Reproduces per-property timing and CASpringAnimation transitions.
  • Tracks the device's active refresh mode instead of forcing a fixed frame rate.
  • Restores a cached AOD frame if Android recreates the wallpaper process.
  • Checks GitHub Releases in-app and verifies the published SHA-256 before opening Android's installer.

Install

  1. Download tendroid-debug.apk from GitHub Releases.
  2. Allow installs from the browser or file manager when Android asks.
  3. Open Tendroid, import a .tendies package, then choose Set live wallpaper.

Tendroid currently ships as a signed prerelease build. The asset keeps its historical tendroid-debug.apk filename so older installed builds can discover updates, but the APK itself is a non-debuggable release build. A persistent project key lets later builds update it in place; do not install APKs carrying a different signing certificate over an existing installation.

Compatibility

Feature Status
CALayer, CGImage, CATextLayer Supported
Nested transforms and state overrides Supported
Sleep / Locked / Unlock Supported
Per-key-path timing and spring curves Supported
Samsung AOD and adaptive refresh rate Tested on device
Early unlock gesture signal Supported where the OEM forwards it
Continuous raw lock-screen swipe progress Not exposed to third-party wallpapers on every OEM
PosterBoard JavaScript host objects Not supported

JavaScript is not executed. PosterBoard scripts depend on Apple-only objects such as layer, document, and system; safely supporting them requires a constrained compatibility runtime, not a generic JavaScript engine.

Import safety

Packages are copied into app-private storage under a SHA-256 content ID. Before rendering, Tendroid enforces limits for entry count, compressed and expanded sizes, XML depth, texture dimensions, and decoded bitmap memory. It also rejects duplicate entries, traversal paths, external entities, DTDs, and oversized CAML documents.

Build

Requirements: JDK 17 and Android SDK 36.

GRADLE_USER_HOME="$PWD/.gradle" \
./gradlew testDebugUnitTest lintRelease assembleRelease

The unsigned local APK is written to app/build/outputs/apk/release/app-release-unsigned.apk. CI supplies the persistent signing key and produces the installable release asset.

To run the parser suite against a real package without committing it:

GRADLE_USER_HOME="$PWD/.gradle" \
TENDIES_SAMPLE=/absolute/path/to/sample.tendies \
./gradlew testDebugUnitTest --rerun-tasks

Every push to main repeats the tests and lint, builds the signed APK, and publishes a GitHub prerelease.

Project status

Tendroid is an experimental compatibility renderer, not an Apple or Android system component. OEM lock-screen behavior differs, and some transitions necessarily use the nearest signal available from Android's public wallpaper APIs.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages