Tencent/matrix · error · TaskExecuteException

e.getMessage()

Error message

e.getMessage()

What it means

UncompressedFileTask.call() wraps any exception raised while scanning the APK for uncompressed entries into a TaskExecuteException with message e.getMessage(). It is a generic wrapper; the actionable information is in the cause.

Solutions

  1. Check e.getCause() for the real failure and its stack trace.
  2. Validate the APK opens as a zip (e.g. unzip -t app.apk) before running.
  3. Rebuild/re-download the APK if corrupt.
  4. Check file read permissions for the user running matrix.

Example fix

// before
catch (Exception e) { log.warn(e.getMessage()); }
// after
catch (TaskExecuteException e) {
    Throwable cause = e.getCause();
    log.error("UncompressedFileTask failed: " + e.getMessage(), cause);
}
Defensive patterns

Strategy: try-catch

Try / catch

try {
    taskResult = task.call();
} catch (TaskExecuteException e) {
    Throwable cause = e.getCause();
    if (cause instanceof ZipException || cause instanceof IOException) {
        log.error("APK unreadable/corrupt: {}", cause.getMessage(), cause);
    } else {
        log.error("UncompressedFileTask failed", cause);
    }
}

Prevention

When it happens

Trigger: IOException opening/reading the APK (corrupt or truncated file), ZipException on a non-zip file, or errors building the JSON result.

Common situations: Pointing at a partially downloaded/corrupt APK; APK replaced on disk mid-run; file permission problems in CI workspaces.

Understand the failure class

Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.

Related errors


AI-assisted analysis of Tencent/matrix@3b8293bd65 (2026-09-08). Data as JSON: /api/errors/0ce237b22b7306fa. Report an issue: GitHub.

Appendix: source

Thrown at matrix/matrix-android/matrix-apk-canary/src/main/java/com/tencent/matrix/apk/model/task/UncompressedFileTask.java:138

                        Log.d(TAG, "file: %s, filter by suffix.", entry.getKey());
                    }
                }
            }

            for (String suffix : uncompressSizeMap.keySet()) {
                if (uncompressSizeMap.get(suffix).equals(compressSizeMap.get(suffix))) {
                    JsonObject fileItem = new JsonObject();
                    fileItem.addProperty("suffix", suffix);
                    fileItem.addProperty("total-size", uncompressSizeMap.get(suffix));
                    jsonArray.add(fileItem);
                }
            }
            ((TaskJsonResult) taskResult).add("files", jsonArray);
            taskResult.setStartTime(startTime);
            taskResult.setEndTime(System.currentTimeMillis());
            return taskResult;
        } catch (Exception e) {
            throw new TaskExecuteException(e.getMessage(), e);
        }
    }
}

View on GitHub (pinned to 3b8293bd65)