skylot/jadx · error · JadxRuntimeException
Unknown type char: '{}' (0x{})
Error message
Unknown type char: '{}' (0x{}) What it means
ArgType.parse(char): the single character is not one of the recognized primitive descriptors (Z B C S I J F D V). This is the final fallback for an unknown primitive type code.
Source
Thrown at jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java:784
case 'B':
return BYTE;
case 'C':
return CHAR;
case 'S':
return SHORT;
case 'I':
return INT;
case 'J':
return LONG;
case 'F':
return FLOAT;
case 'D':
return DOUBLE;
case 'V':
return VOID;
default:
throw new JadxRuntimeException("Unknown type char: '" + f + "' (0x" + Integer.toHexString(f) + ')');
}
}
public int getRegCount() {
if (isPrimitive()) {
PrimitiveType type = getPrimitiveType();
if (type == PrimitiveType.LONG || type == PrimitiveType.DOUBLE) {
return 2;
} else {
return 1;
}
}
if (!isTypeKnown()) {
return 0;
}
return 1;
}
View on GitHub (pinned to e738a26571)
Solutions
- Upgrade JADX.
- Inspect the raw byte value shown in the message (0xNN) to identify the corrupt character.
- Validate DEX type tables with dexdump.
- Re-extract the APK and report upstream.
Defensive patterns
Strategy: validation
Validate before calling
// Pre-check that every single-char type descriptor is a known primitive.
static final String VALID_PRIMS = "ZBCSIJFDV";
static boolean validPrimChar(char c) { return VALID_PRIMS.indexOf(c) >= 0; } Try / catch
try {
jadx.load();
} catch (JadxRuntimeException e) {
if (e.getMessage().contains("Unknown type char")) {
log.warn("Unknown primitive type descriptor char; corrupt DEX", e);
} else throw e;
} Prevention
- Validate single-char type descriptors against the JVM primitive set.
- Use the hex value in the message to diagnose the corrupt byte.
- Keep JADX updated.
When it happens
Trigger: A type descriptor character outside the JVM primitive set, e.g. 'A', 'X', 'N', or a control character from corrupt data.
Common situations: Corrupt DEX type strings, a packer that mutates descriptor bytes, or an input from an unsupported/prototype DEX format.
Related errors
- Failed to parse type string: {}
- Unknown type string: "{}"
- Threads count must be positive, got: {}
- Cannot save type:
- Failed to decode insn: {}
AI-assisted analysis of skylot/jadx@e738a26571 (2026-08-14).
Data as JSON: /api/errors/2ed298b28d19148a.
Report an issue: GitHub.