MuntashirAkon/AppManager · error · IOException

Unknown/unsupported entries detected.

Error message

Unknown/unsupported entries detected.

What it means

After categorizing all TAR entries, AndroidBackupExtractor throws IOException if any entries landed in the CAT_UNK (unknown) category, meaning the archive contains files the extractor does not know how to place (e.g. unexpected top-level files in the .ab).

Solutions

  1. Update App Manager to a build that recognizes the new entry types
  2. Use the original tool that created the backup to restore it
  3. Inspect the logged 'Unknown entries' warning to identify and remove unsupported files
  4. Regenerate the backup with a compatible version

Example fix

// before
new AndroidBackupExtractor(ab, dest, pkg, false).extract(); // fails on unknown entries
// after (pre-convert and inspect entries)
try (TarArchiveInputStream tis = toTar(ab)) {
    TarArchiveEntry e;
    while ((e = tis.getNextTarEntry()) != null) {
        if (!isKnownCategory(e.getName())) {
            Log.w(TAG, "Skipping unsupported entry " + e.getName());
        }
    }
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-scan converted TAR for entries outside known categories
while ((entry = tis.getNextTarEntry()) != null) {
    if (!matchesKnownCategory(entry.getName())) unknown.add(entry.getName());
}
if (!unknown.isEmpty()) Log.w(TAG, "Unsupported entries: " + unknown);

Try / catch

try {
    extractor.extract();
} catch (IOException e) {
    if (e.getMessage().contains("Unknown/unsupported entries")) {
        Log.e(TAG, "Archive uses entry types this build cannot place; update App Manager", e);
    } else throw e;
}

Prevention

When it happens

Trigger: An .ab backup containing entries outside the recognized categories (apk, data, device-protected data, obb, etc.), such as extra root-level files added by third-party backup tools or archive tampering.

Common situations: Backups generated by other tools with a different layout; manually edited/repacked .ab files; newer App Manager backups with entry types an older extractor build doesn't recognize (version skew).

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of MuntashirAkon/AppManager@0152f468fc (2026-09-12). Data as JSON: /api/errors/f59938b12297270c. Report an issue: GitHub.

Appendix: source

Thrown at app/src/main/java/io/github/muntashirakon/AppManager/backup/adb/AndroidBackupExtractor.java:127

                // Categorize and build TarArchiveEntry
                int category = getCategory(filename);
                if (category == CAT_UNK && filename.equals(Constants.BACKUP_MANIFEST_FILENAME)) {
                    // Ignore manifest file
                    continue;
                }
                TarArchiveEntry targetEntry = getTargetArchiveEntry(entry, filename);
                List<TargetTarEntry> targetTarEntries = mCategoryTargetEntriesMap.get(category);
                if (targetTarEntries == null) {
                    targetTarEntries = new ArrayList<>();
                    mCategoryTargetEntriesMap.put(category, targetTarEntries);
                }
                targetTarEntries.add(new TargetTarEntry(file, filename, category, targetEntry));
            }
        }
        // Validate UNK entries
        if (mCategoryTargetEntriesMap.get(CAT_UNK) != null) {
            Log.w(TAG, "Unknown entries: " + mCategoryTargetEntriesMap.get(CAT_UNK));
            throw new IOException("Unknown/unsupported entries detected.");
        }
    }

    @Override
    public void close() {
        for (Path file : mFilesToBeDeleted) {
            file.delete();
        }
    }

    @Nullable
    public Path[] getSourceFiles(@NonNull String extension, @TarUtils.TarType String tarType)
            throws IOException {
        return getFiles(CAT_SRC, 0, extension, tarType);
    }

    @Nullable
    public Path[] getInternalCeDataFiles(int dataIndex, @NonNull String extension,

View on GitHub (pinned to 0152f468fc)