MuntashirAkon/AppManager · error · BackupException
Could not get checksums.
Error message
Could not get checksums.
What it means
VerifyOp reads the checksum map via mBackupItem.getChecksum() inside a catch (Throwable). Any failure — IO error, parse failure of the checksum file, or even runtime errors — is converted into this BackupException after cleanup(). It means the list of expected per-file checksums could not be loaded, so integrity verification cannot proceed.
Source
Thrown at app/src/main/java/io/github/muntashirakon/AppManager/backup/VerifyOp.java:63
}
try {
mBackupItem.setCrypto(mBackupInfo.getCrypto());
} catch (CryptoException e) {
mBackupItem.cleanup();
throw new BackupException("Could not get crypto " + mBackupInfo.crypto, e);
}
try {
mBackupMetadata = mBackupItem.getMetadata(mBackupInfo).metadata;
} catch (IOException e) {
mBackupItem.cleanup();
throw new BackupException("Could not read backup metadata. Possibly due to a malformed json file.", e);
}
// Get checksums
try {
mChecksum = mBackupItem.getChecksum();
} catch (Throwable e) {
mBackupItem.cleanup();
throw new BackupException("Could not get checksums.", e);
}
// Verify metadata
try {
verifyMetadata();
} catch (BackupException e) {
mBackupItem.cleanup();
throw e;
}
}
@Override
public void close() {
Log.d(TAG, "Close called");
mChecksum.close();
mBackupItem.cleanup();
}
void verify() throws BackupException {View on GitHub (pinned to 0152f468fc)
Solutions
- Re-copy the entire backup directory, ensuring the checksum file is included.
- Recreate the backup so checksums are regenerated alongside the files.
- Check the backup is not from an incompatible AppManager version; upgrade the app if needed.
- Verify read permissions on all files in the backup directory.
Example fix
// before: partial copy omits checksums backup/ # backup.json, metadata only // after: copy everything backup/ # backup.json, metadata, checksums, data files
Defensive patterns
Strategy: validation
Validate before calling
// Confirm the checksum file exists and parses before verify
File c = new File(backupDir, "checksums.json"); // name per AppManager layout
if (!c.isFile() || c.length() == 0) throw new IllegalStateException("checksum file missing");
new JSONObject(new String(IOUtils.readFully(new FileInputStream(c)))); Try / catch
try {
new VerifyOp(backupItem).verify();
} catch (BackupException e) {
if ("Could not get checksums.".equals(e.getMessage())) {
// re-copy full backup directory including checksum data
}
} Prevention
- Copy backups as complete directories (zip/tar) rather than selecting files.
- Verify file counts after transfer against the source directory.
- Recreate old backups whose checksum format may no longer be readable.
When it happens
Trigger: verify() on a backup whose checksum file is missing, empty, unreadable, or whose content doesn't parse into the expected filename→checksum map.
Common situations: Backups copied selectively (checksum file skipped), corrupted storage, or backups produced by newer AppManager versions writing a checksum format the current reader cannot parse.
Understand the failure class
Background: Checksum mismatch errors: "checksum verification failed", "digest mismatch", "expected vs actual checksum" — what they mean and how to fix them — this error's family across 41 libraries.
Related errors
- Couldn't verify metadata file.
- KeyStore file verification failed.\nFile: ${file}\nFound: ${
- Data file verification failed for index ${i}.\nFile: ${file}
- Couldn't verify misc file.\nFile: ${miscFile}\nFound: ${chec
- Couldn't verify permission file.\nFile: ${rulesFile}\nFound:
AI-assisted analysis of MuntashirAkon/AppManager@0152f468fc (2026-09-12).
Data as JSON: /api/errors/a2146053dc27b404.
Report an issue: GitHub.