⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obfuscator.java

📁 ProGuard 是一个免费的 Java类文件的压缩
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                    new MemberNameCollector(configuration.overloadAggressively,                                                descriptorMap)))),                    // Assign new names to all non-private members in this class.                    new AllMemberVisitor(                    new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                    new MemberObfuscator(configuration.overloadAggressively,                                         nameFactory,                                         descriptorMap))),                    // Clear the collected names.                    new MapCleaner(descriptorMap)                }));            // Come up with new names for all private class members.            programClassPool.classesAccept(                new MultiClassVisitor(new ClassVisitor[]                {                    // Collect all member names in this class.                    new AllMemberVisitor(                    new MemberNameCollector(configuration.overloadAggressively,                                            descriptorMap)),                    // Collect all non-private member names higher up the hierarchy.                    new ClassHierarchyTraveler(false, true, true, false,                    new AllMemberVisitor(                    new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                    new MemberNameCollector(configuration.overloadAggressively,                                            descriptorMap)))),                    // Assign new names to all private members in this class.                    new AllMemberVisitor(                    new MemberAccessFilter(ClassConstants.INTERNAL_ACC_PRIVATE, 0,                    new MemberObfuscator(configuration.overloadAggressively,                                         nameFactory,                                         descriptorMap))),                    // Clear the collected names.                    new MapCleaner(descriptorMap)                }));        }        // Some class members may have ended up with conflicting names.        // Come up with new, globally unique names for them.        NameFactory specialNameFactory =            new SpecialNameFactory(new SimpleNameFactory());        // Collect a map of special names to avoid        // [descriptor - new name - old name].        Map specialDescriptorMap = new HashMap();        programClassPool.classesAccept(            new AllMemberVisitor(            new MemberSpecialNameFilter(            new MemberNameCollector(configuration.overloadAggressively,                                    specialDescriptorMap))));        libraryClassPool.classesAccept(            new AllMemberVisitor(            new MemberSpecialNameFilter(            new MemberNameCollector(configuration.overloadAggressively,                                    specialDescriptorMap))));        // Replace conflicting non-private member names with special names.        programClassPool.classesAccept(            new MultiClassVisitor(new ClassVisitor[]            {                // Collect all private member names in this class and down                // the hierarchy.                new ClassHierarchyTraveler(true, false, false, true,                new AllMemberVisitor(                new MemberAccessFilter(ClassConstants.INTERNAL_ACC_PRIVATE, 0,                new MemberNameCollector(configuration.overloadAggressively,                                        descriptorMap)))),                // Collect all non-private member names anywhere in the hierarchy.                new ClassHierarchyTraveler(true, true, true, true,                new AllMemberVisitor(                new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                new MemberNameCollector(configuration.overloadAggressively,                                        descriptorMap)))),                // Assign new names to all conflicting non-private members in                // this class.                new AllMemberVisitor(                new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                new MemberNameConflictFixer(configuration.overloadAggressively,                                            descriptorMap,                                            warningPrinter,                new MemberObfuscator(configuration.overloadAggressively,                                     specialNameFactory,                                     specialDescriptorMap)))),                // Clear the collected names.                new MapCleaner(descriptorMap)            }));        // Replace conflicting private member names with special names.        // This is only possible if those names were kept or mapped.        programClassPool.classesAccept(            new MultiClassVisitor(new ClassVisitor[]            {                // Collect all member names in this class.                new AllMemberVisitor(                new MemberNameCollector(configuration.overloadAggressively,                                        descriptorMap)),                // Collect all non-private member names higher up the hierarchy.                new ClassHierarchyTraveler(false, true, true, false,                new AllMemberVisitor(                new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE,                new MemberNameCollector(configuration.overloadAggressively,                                        descriptorMap)))),                // Assign new names to all conflicting private members in this                // class.                new AllMemberVisitor(                new MemberAccessFilter(ClassConstants.INTERNAL_ACC_PRIVATE, 0,                new MemberNameConflictFixer(configuration.overloadAggressively,                                            descriptorMap,                                            warningPrinter,                new MemberObfuscator(configuration.overloadAggressively,                                     specialNameFactory,                                     specialDescriptorMap)))),                // Clear the collected names.                new MapCleaner(descriptorMap)            }));        // Print out any warnings about member name conflicts.        if (configuration.warn)        {            int warningCount = warningPrinter.getWarningCount();            if (warningCount > 0)            {                System.err.println("Warning: there were " + warningCount +                                   " conflicting class member name mappings.");                System.err.println("         Your configuration may be inconsistent.");                if (!configuration.ignoreWarnings)                {                    System.err.println("         If you are sure the conflicts are harmless,");                    System.err.println("         you could try your luck using the '-ignorewarnings' option.");                    throw new IOException("Please correct the above warnings first.");                }            }        }        // Print out the mapping, if requested.        if (configuration.printMapping != null)        {            PrintStream ps = isFile(configuration.printMapping) ?                new PrintStream(new BufferedOutputStream(new FileOutputStream(configuration.printMapping))) :                System.out;            // Print out items that will be removed.            programClassPool.classesAcceptAlphabetically(new MappingPrinter(ps));            if (ps != System.out)            {                ps.close();            }        }        // Actually apply the new names.        programClassPool.classesAccept(new ClassRenamer());        libraryClassPool.classesAccept(new ClassRenamer());        // Update all references to these new names.        programClassPool.classesAccept(new ClassReferenceFixer(false));        libraryClassPool.classesAccept(new ClassReferenceFixer(false));        programClassPool.classesAccept(new MemberReferenceFixer());        // Make package visible elements public or protected, if necessary.        if (configuration.repackageClasses != null)        {            programClassPool.classesAccept(                new AllConstantVisitor(                new ClassOpener()));        }        // Rename the source file attributes, if requested.        if (configuration.newSourceFileAttribute != null)        {            programClassPool.classesAccept(new SourceFileRenamer(configuration.newSourceFileAttribute));        }        // Mark NameAndType constant pool entries that have to be kept        // and remove the other ones.        programClassPool.classesAccept(new NameAndTypeUsageMarker());        programClassPool.classesAccept(new NameAndTypeShrinker());        // Mark Utf8 constant pool entries that have to be kept        // and remove the other ones.        programClassPool.classesAccept(new Utf8UsageMarker());        programClassPool.classesAccept(new Utf8Shrinker());    }    /**     * Returns whether the given file is actually a file, or just a placeholder     * for the standard output.     */    private boolean isFile(File file)    {        return file.getPath().length() > 0;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -