KKURO GitHubDownload

Install

  1. Download KURO-v2.5.apk from Releases. Full client, Android arm64, game version 7.1.0. Not a patch, not a plugin.
  2. Check the hash before installing:
    sha256sum KURO-v2.5.apk
    # starts with 533a1cfe, matches the .sha256 in the release
  3. Coming from the official client, or from another mod: your phone will refuse to install over it (different signing key). Uninstalling the old app deletes its data folder, which holds the game's downloaded resources — so the game downloads them once again (up to ~50 GB). That happens once per switch. KURO → newer KURO updates install straight over and keep everything.
    # Optional, if you want to skip that download (USB debugging on):
    adb pull /sdcard/Android/data/com.miHoYo.GenshitImpact ./gi-data
    # ... uninstall, install KURO, let it open once, close it again,
    # and only then push the files back — the app must create its own folder first:
    adb push ./gi-data /sdcard/Android/data/com.miHoYo.GenshitImpact
    Renaming the folder by hand and putting it back before the game has run once is the usual cause of the "not enough storage" error: the game can't use a folder it didn't create, so it tries to download everything again on a full disk. Restore after the first launch, or just re-download.
  4. Keep ~2 GB free for the install itself (the APK is ~724 MB and needs room to unpack). If space is tight after a switch, the renamed leftover data folder is usually what is eating it.
  5. Install it (allow unknown sources when asked). Same login, account untouched.
  6. Play Protect may warn. It flags every re-signed copy of a Play game — Kuro is not from Play and never can be. Confirm the SHA-256 above, then choose More details → Install anyway. To silence it entirely, turn off app scanning: Play Store → Play Protect → gear icon → turn off "Scan apps with Play Protect".
  7. Launch and wait for the world to load. The badge shows up once the hooks are in. Don't press anything before that. Early presses land before the hooks do and misbehave.
  8. Tap the badge for the menu. The quick buttons beside it jump straight to things.
Updating means installing the new APK over the old one. Every Kuro release carries the same signing key, so Android treats it as the same app — no uninstall, ever, between Kuro versions. Profiles and collected memory carry over.

First run

Read Safety once, fully, before touching anything red. Then: No Fall Damage on before any approximate pin. One Go to nearest chest before any farm, so a landing feels familiar. Open the in-game map once per region you care about, since Kuro reads the map's own flags while it's open and everything gets smarter with it.

One hop

Teleport, Go, nearest chest, waypoint or statue. Short hops land instantly. Long ones open with a loading screen (the game's own transmit) and finish on foot. That screen is the safe mile, not a bug. The status line at the top of the page always says what state it's in. If a hop ever stops short, read that line, since it names the cause.

A locked waypoint

Offline points, region, Teleport Points, Go to nearest. Locked ones get visited on purpose. You land next to it and Auto Waypoint presses the prompt. No prompt at all means quest-sealed, so finish the local quest first. Nothing opens those.

A full clear

Offline points, region, kind, Auto farm. Set the wait (longer is calmer) and watch the top line count collected against skipped. Stop any time. The six switches the run needs get forced on for it and restored after, however it ends. Collected points are remembered, so tomorrow's run only visits what's left.

Approximate pins arrive high and drop. No Fall Damage on. Every time.

Items and ESP

World, Items, pick by name and picture. Nearest picked item jumps to it, Unpick all clears. Only picked items declutters the rest. For ESP itself: names and distance on, arrows on, max distance around 200 m, then narrow by kind. A kind showing zero means move on.

Profiles and harvest

Profiles save the whole setup. Keep one for screenshots and one for farming. Harvest records what you walk past, with a count and a JSON export.

Something not working

Settings has a Health block: hooks installed, entity count, frame timing (average, 95th percentile, and how much work the menu itself does per frame). If a feature does nothing, read that block first, and if it says Features are OFF this session, the top banner says why.

For everything else there is a session log: Settings, Diagnostics, turn on Session log. Play until the problem shows, tap Mark this moment when it does, then Save a shareable copy and send runlog.txt on the Discord with your device model. The file holds gates, counts and timings -- no account data. For trouble before the menu opens, create an empty file named verbose.cfg in /sdcard/Android/data/com.miHoYo.GenshitImpact/files/ and relaunch: logging starts from the first line. If the game dies outright, the crash record under Settings has you covered, as before.