Skip to content

Releases: scsonic/libQwenImage21

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 17:10

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 10:53

Full Changelog: v0.2.2...v0.3.0

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 24 Sep 01:39

First release built and published entirely by CI (.github/workflows/build.yml), triggered by this tag. Verified
end to end: uninstalled the app, installed this exact APK, pushed the models, and generated an image on it.

Changes since v0.2

  • Consistent debug signing. All builds — local and CI — now sign with a debug key checked into the repo
    instead of each machine's own ~/.android/debug.keystore. Without this, the CI-built APK couldn't update a
    locally-built install (INSTALL_FAILED_UPDATE_INCOMPATIBLE) and vice versa.
  • push_models.sh: adb push into Android/data/<pkg> failed outright on a locked-down test device
    ("remote fchown failed", no file left behind); pushes now go through adb shell cat > instead, and the
    script chmods the directories/files so the app can actually read what's pushed. Also follows symlinks, so a
    text_encoder/ shared with another model isn't silently skipped.
  • README trimmed and given a top-of-file link to the Chinese section.
  • CI: builds the demo APK and qwenimage21 AAR on every push and PR; a v* tag build also attaches both here,
    named <artifact>-<tag>-<commit>.{apk,aar}.

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 01:29

Superseded by v0.2.2 — this build's debug
signature doesn't match v0.2.2 or later (fixed by a checked-in shared debug keystore), so upgrading over it needs
an uninstall first.

v0.2 — image editing on GPU, size tiers, English UI

Choose a tag to compare

@scsonic scsonic released this 24 Sep 00:14

Superseded by v0.2.2 — its signature also differs from v0.2.2, so upgrading over it needs an uninstall first.

Needs the current models from evankuo/Qwen-Image-2.1-MNN — dit.mnn and dit.mnn.weight were re-exported on 2026-09-24. v0.1 does not work with the new files, and this release does not work with the old ones. Re-download both, or tap Download models in the app: it checks every file already on the phone against the repo's checksums (the new dit.mnn.weight has exactly the old size, so size alone would not catch it) and fetches only the ones that changed.

Changes

  • Image editing works on the GPU at every size. The DiT K/V cache is now one tensor per layer. As a single tensor, a Standard-size edit needed ~1 GB in one buffer, which is more than Adreno's 1 GiB limit, and every step read garbage.
  • Fixed the edit colours. The input image reached the VAE and the vision tower with red and blue swapped, which turned skin teal in the output.
  • Sizes: 7 aspect ratios × 3 pixel budgets (Standard ~512², Fast ~384², Tiny ~320²). The app shows the exact output size, and edit mode takes a size too.
  • Out-of-memory handling: each stage checks free memory first and shows a retryable Out of memory dialog. If Android still kills the app, the next launch says which stage and settings it was running. The VAE estimate is now fitted to phone measurements.
  • Prompt history, English UI, new README samples (all generated on a Snapdragon 8 Gen 2).

Measured on a Snapdragon 8 Gen 2, 20 steps

total
Text to image 448×576 (Standard) 451 s
Text to image 512×288 (Fast) 289 s
Text to image 320×320 (Tiny) 217 s
Image edit → 352×448 (Fast) 348 s
Image edit → 448×576 (Standard) 556 s

Assets: demo APK (debug-signed, arm64) and the qwenimage21 AAR. Built from c3cceea (MNN 1965a263).

v0.1 — first working port

Choose a tag to compare

@scsonic scsonic released this 21 Sep 14:30

Superseded by v0.2. The models on Hugging Face were re-exported on 2026-09-24 and no longer load with this APK/AAR.

First working Qwen-Image-2.1 text-to-image on Android (MNN, int4, OpenCL).

Tested on Snapdragon 8 Gen 2 / 16 GB: 512×512, ~19.7 s per step, ~490 s for 20 steps. See README for limitations.