4.0 CheatDroid is rebuilt from scratch, and a 2.x license carries over. What changed
CheatDroid

Where do Android games keep their save data?

An Android game saves into its own private folder, /data/data/[package name], and sometimes into a second one on shared storage, Android/data/[package name]. Inside, the save is usually one of four things: a preferences file, a database, a file in the game’s own format, or nothing at all because the server keeps it. Which one depends mostly on the engine the game was built with.

The package name is the game’s ID, not its title. Hill Climb Racing’s folder isn’t called “Hill Climb Racing”. CheatDroid’s app list shows both, and the address bar of the game’s Play Store page has the ID after id=.

The private folder

You’ll also see it as /data/user/0/[package name], which is the same folder under the name Android uses for the phone’s main user. Android lets no other app in, which is why reaching it takes root. These are the folders that matter:

  • shared_prefs/: XML files with named values, <int name="coins" value="120" />. The most common place for coins, lives, unlocked levels and settings, and the easiest to edit.
  • databases/: SQLite databases, for many records of the same kind, one row per level or per item you own. A -journal, -wal or -shm file next to a database belongs to it.
  • files/: anything the game writes itself. JSON and XML saves open as text; a binary save needs a hex editor, and makes a good guess hard.
  • files/datastore/: files ending in .preferences_pb are DataStore, Google’s newer replacement for shared preferences. Same named values, stored in binary.
  • app_webview/: games built as web pages keep their saves in the browser storage of the WebView in here, which is a database meant for the browser and not for people.
  • cache/: temporary files Android may delete at any time. Never the real save.

Android/data on shared storage

/sdcard/Android/data/[package name]/files is the folder a game gets on shared storage. Unity games that write their own save files put them here by default, because that’s where Unity’s persistentDataPath points on Android. Since Android 11, Android keeps file managers out of other apps’ folders in there, so for editing it’s as closed as the private folder.

Android/obb/[package name] next to it holds the large downloads a game fetches after installing: graphics, sound, levels. No saves.

By engine

  • Unity: settings and small values in one file, shared_prefs/[package name].v2.playerprefs.xml. Many games keep coins and levels right there. Bigger saves go into Android/data/[package name]/files. More in how to edit Unity PlayerPrefs.
  • Cocos2d-x: its UserDefault storage is the shared preferences file Cocos2dxPrefsFile.xml.
  • Other engines: whatever the developer chose, most often shared preferences and sometimes a database. Hill Climb Racing, for example, keeps its coins in hillclimbprefs.xml.

Not on the phone at all

A game with an account, a cloud save or anything multiplayer keeps your real progress on its server. The phone holds a login and a copy for display, and that copy is overwritten at the next sync. You can see which kind of game you have with CheatDroid’s network capture: if your coin count arrives in a response from the server, the server keeps it.

And some numbers exist only while the game runs, like health in a fight or a timer. Those are never written down and live in memory, which is a different tool.

Finding it without guessing

CheatDroid scans both folders of a game and sorts what it finds under Shared preferences, DataStore, Databases, Files and Other, so you see in one list what the game uses. Note a number the game shows, then search the open file for it. The guide to hacking Android games goes through it step by step.

Download CheatDroid