pxb1988/dex2jar · error · DexException
Not support yet.
Error message
Not support yet.
What it means
When decoding an encoded_value (annotation/constant values), the reader's switch encountered a value type byte it has no case for, so it throws DexException("Not support yet."). This means the dex uses an encoded_value type the library has not implemented, not that the file is necessarily corrupt. It fires while reading annotations, static field initial values, or similar encoded data.
Solutions
- Upgrade dex-reader/dex2jar to the latest release or snapshot that implements the missing encoded_value type
- Recompile the input targeting an older DEX format (e.g. --min-api in d8) that only uses supported value types
- Identify the offending value type byte and patch the reader's switch to handle it
- Remove/refactor the annotation or constant using the unsupported value type if you control the source
Example fix
// before // d8 --min-api 28 # emits method-handle encoded values -> Not support yet // after // d8 --min-api 26 --output . classes/*.class # or upgrade dex-lib version
Defensive patterns
Strategy: try-catch
Validate before calling
// Detect DEX version before opening; newer formats may carry unimplemented value types byte[] h = new byte[8]; // after magic check: version = ((h[4]&0xFF)<<24)|((h[5]&0xFF)<<16)|((h[6]&0xFF)<<8)|0 int version = ((h[4]&0xFF)<<24)|((h[5]&0xFF)<<16)|((h[6]&0xFF)<<8); boolean tooNew = version > 0x3033035; // 035/036/038 known-good for old lib; check your dex-lib version null
Try / catch
try {
new DexFileReader(file).accept(visitor);
} catch (DexException e) {
if ("Not support yet.".equals(e.getMessage())) {
throw new UnsupportedOperationException(
"dex-lib cannot decode an encoded_value in this DEX; upgrade dex-reader or lower --min-api", e);
}
throw e;
} Prevention
- Keep dex-reader/dex2jar at the latest version before parsing modern DEX (038/039/040)
- Target older min-api when re-dexing so exotic encoded_value types are not emitted
- Check the DEX version field in the header before parsing with an old library
When it happens
Trigger: A dex containing encoded_value types missing from the reader's switch (e.g. very new or rare value types like METHOD_HANDLE/METHOD_TYPE constants on newer dex formats) reached via DexFileReader annotation or encoded-array decoding paths.
Common situations: Reading dex files built for newer Android/API levels with a pinned old dex-lib version; bootstrap method / method-handle constants from DEX 038+ files; invoking-handle annotations in libraries compiled with new toolchains.
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
- not support
- Odex unsupported.
- Magic unsupported.
- Endian_tag unsupported
- Encountered RESTART_LOCAL on new v
AI-assisted analysis of pxb1988/dex2jar@b5bda4fb49 (2026-09-08).
Data as JSON: /api/errors/093d4cf79c7bf830.
Report an issue: GitHub.
Appendix: source
Thrown at dex-reader/src/main/java/com/googlecode/d2j/reader/DexFileReader.java:739
return getMethod(method_id);
}
case VALUE_ENUM: {
return getField((int) readUIntBits(in, b));
}
case VALUE_ARRAY: {
return read_encoded_array(in);
}
case VALUE_ANNOTATION: {
return read_encoded_annotation(in);
}
case VALUE_NULL:
return null;
case VALUE_BOOLEAN: {
return ((b >> 5) & 0x3) != 0;
}
default:
throw new DexException("Not support yet.");
}
}
private MethodHandle getMethodHandle(int i) {
methodHandleIdIn.position(i * 8);
int method_handle_type = methodHandleIdIn.getShort() & 0xFFFF;
methodHandleIdIn.getShort();//unused
int field_or_method_id = methodHandleIdIn.getShort() & 0xFFFF;
switch (method_handle_type) {
case MethodHandle.INSTANCE_GET:
case MethodHandle.INSTANCE_PUT:
case MethodHandle.STATIC_GET:
case MethodHandle.STATIC_PUT:
return new MethodHandle(method_handle_type, getField(field_or_method_id));
case MethodHandle.INVOKE_INSTANCE:
case MethodHandle.INVOKE_STATIC:
View on GitHub (pinned to b5bda4fb49)