public class ClassObfuscator
extends java.lang.Object
implements proguard.classfile.visitor.ClassVisitor, proguard.classfile.attribute.visitor.AttributeVisitor, proguard.classfile.attribute.visitor.InnerClassesInfoVisitor, proguard.classfile.constant.visitor.ConstantVisitor
ClassVisitor comes up with obfuscated names for the
classes it visits, and for their class members. The actual renaming is
done afterward.ClassRenamer| Constructor and Description |
|---|
ClassObfuscator(proguard.classfile.ClassPool programClassPool,
proguard.classfile.ClassPool libraryClassPool,
DictionaryNameFactory classNameFactory,
DictionaryNameFactory packageNameFactory,
boolean useMixedCaseClassNames,
java.util.List keepPackageNames,
java.lang.String flattenPackageHierarchy,
java.lang.String repackageClasses,
boolean allowAccessModification,
boolean adaptKotlin)
Creates a new ClassObfuscator.
|
| Modifier and Type | Method and Description |
|---|---|
static boolean |
hasOriginalClassName(proguard.classfile.Clazz clazz)
Returns whether the class name of the given class has changed.
|
static java.lang.String |
newClassName(proguard.classfile.Clazz clazz)
Retrieves the new name of the given class.
|
static void |
setNewClassName(proguard.classfile.Clazz clazz,
java.lang.String name)
Assigns a new name to the given class.
|
void |
visitAnyAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.Attribute attribute) |
void |
visitAnyClass(proguard.classfile.Clazz clazz) |
void |
visitClassConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.ClassConstant classConstant) |
void |
visitEnclosingMethodAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.EnclosingMethodAttribute enclosingMethodAttribute) |
void |
visitInnerClassesAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.InnerClassesAttribute innerClassesAttribute) |
void |
visitInnerClassesInfo(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.InnerClassesInfo innerClassesInfo) |
void |
visitLibraryClass(proguard.classfile.LibraryClass libraryClass) |
void |
visitProgramClass(proguard.classfile.ProgramClass programClass) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitvisitAnnotationDefaultAttribute, visitAnyAnnotationsAttribute, visitAnyParameterAnnotationsAttribute, visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitCodeAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitExceptionsAttribute, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitMethodParametersAttribute, visitModuleAttribute, visitModuleMainClassAttribute, visitModulePackagesAttribute, visitNestHostAttribute, visitNestMembersAttribute, visitPermittedSubclassesAttribute, visitRecordAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDebugExtensionAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttributevisitAnyConstant, visitAnyMethodrefConstant, visitAnyRefConstant, visitDoubleConstant, visitDynamicConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitInvokeDynamicConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constantpublic ClassObfuscator(proguard.classfile.ClassPool programClassPool,
proguard.classfile.ClassPool libraryClassPool,
DictionaryNameFactory classNameFactory,
DictionaryNameFactory packageNameFactory,
boolean useMixedCaseClassNames,
java.util.List keepPackageNames,
java.lang.String flattenPackageHierarchy,
java.lang.String repackageClasses,
boolean allowAccessModification,
boolean adaptKotlin)
programClassPool - the class pool in which class names
have to be unique.libraryClassPool - the class pool from which class names
have to be avoided.classNameFactory - the optional class obfuscation dictionary.packageNameFactory - the optional package obfuscation
dictionary.useMixedCaseClassNames - specifies whether obfuscated packages and
classes can get mixed-case names.keepPackageNames - the optional filter for which matching
package names are kept.flattenPackageHierarchy - the base package if the obfuscated package
hierarchy is to be flattened.repackageClasses - the base package if the obfuscated classes
are to be repackaged.allowAccessModification - specifies whether obfuscated classes can
be freely moved between packages.adaptKotlin - specifies whether Kotlin should be supported.public void visitAnyClass(proguard.classfile.Clazz clazz)
visitAnyClass in interface proguard.classfile.visitor.ClassVisitorpublic void visitProgramClass(proguard.classfile.ProgramClass programClass)
visitProgramClass in interface proguard.classfile.visitor.ClassVisitorpublic void visitLibraryClass(proguard.classfile.LibraryClass libraryClass)
visitLibraryClass in interface proguard.classfile.visitor.ClassVisitorpublic void visitAnyAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.Attribute attribute)
visitAnyAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic void visitInnerClassesAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.InnerClassesAttribute innerClassesAttribute)
visitInnerClassesAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic void visitEnclosingMethodAttribute(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.EnclosingMethodAttribute enclosingMethodAttribute)
visitEnclosingMethodAttribute in interface proguard.classfile.attribute.visitor.AttributeVisitorpublic void visitInnerClassesInfo(proguard.classfile.Clazz clazz,
proguard.classfile.attribute.InnerClassesInfo innerClassesInfo)
visitInnerClassesInfo in interface proguard.classfile.attribute.visitor.InnerClassesInfoVisitorpublic void visitClassConstant(proguard.classfile.Clazz clazz,
proguard.classfile.constant.ClassConstant classConstant)
visitClassConstant in interface proguard.classfile.constant.visitor.ConstantVisitorpublic static void setNewClassName(proguard.classfile.Clazz clazz,
java.lang.String name)
clazz - the given class.name - the new name.public static boolean hasOriginalClassName(proguard.classfile.Clazz clazz)
clazz - the given class.public static java.lang.String newClassName(proguard.classfile.Clazz clazz)
clazz - the given class.null if it doesn't
have one yet.