NullPointerExceptionthat occurred when parsing class files with retained Java 8 type annotations that use annotation parameters.
invokedynamicinstructions leading to AbstractMethodErrors of class files which had their constant pool entry order permutated for some reason (for example by the JarJar plugin for maven).
implementsattribute now considers types in
<externalclasses>as well when determining the interfaces implemented by a given class.
IllegalArgumentException: "Invalid fully qualified name (b)"that occurred when referencing or attempting to obfuscate classes that start with a dollar ('$') sign.
IllegalArgumentExceptioncaused by Java 8 compatibility problems that arose in certain situations, for example when using hierarchy based keep instructions.
invokedynamicinstructions leading to AbstractMethodErrors when using default methods.
META-INF/servicesentries if the entry corresponds to a type that is obfuscated.
invokedynamicin the obfuscation process.
implementsattribute was used for a
<class>element without an additional
attributeelement if the default shrinking settings were used (i.e. if no
keepelement was defined).
yGuardtask now supports a way of specifying a set of Jar files that should be obfuscated at the same time using simple patternset syntax.
attributeelement contained no nested
mapelement of the
Varargsas 'unknown attributes' anymore.
extendsattribute was used in combination with the
shrinkelements. Now, both elements apply
patternsetelements in nested
fieldelements to class names, just as stated in the yGuard documentation.
classesattribute of the
classelement is not set or set to "none", the shrinking engine will now include the classes that match based on the given
nameattribute or nested
patternset, effectively ignoring the
implementsattributes for the
.class" bytecode construct, signatures, local variable type table, enclosing method information.