📄 proguardgui.java
字号:
configuration.assumeNoSideEffects = noSideEffectMethods; } // Collect the "why are you keeping" options. configuration.whyAreYouKeeping = whyAreYouKeepingPanel.getClassSpecifications(); // Get the other options. configuration.shrink = shrinkCheckBox .isSelected(); configuration.printUsage = printUsageCheckBox .isSelected() ? new File(printUsageTextField .getText()) : null; configuration.optimize = optimizeCheckBox .isSelected(); configuration.optimizationPasses = ((SpinnerNumberModel)optimizationPassesSpinner.getModel()).getNumber().intValue(); configuration.allowAccessModification = allowAccessModificationCheckBox .isSelected(); configuration.obfuscate = obfuscateCheckBox .isSelected(); configuration.printMapping = printMappingCheckBox .isSelected() ? new File(printMappingTextField .getText()) : null; configuration.applyMapping = applyMappingCheckBox .isSelected() ? new File(applyMappingTextField .getText()) : null; configuration.obfuscationDictionary = obfuscationDictionaryCheckBox .isSelected() ? new File(obfuscationDictionaryTextField .getText()) : null; configuration.overloadAggressively = overloadAggressivelyCheckBox .isSelected(); configuration.useUniqueClassMemberNames = useUniqueClassMemberNamesCheckBox .isSelected(); configuration.useMixedCaseClassNames = useMixedCaseClassNamesCheckBox .isSelected(); configuration.flattenPackageHierarchy = flattenPackageHierarchyCheckBox .isSelected() ? ClassUtil.externalClassName(flattenPackageHierarchyTextField .getText()) : null; configuration.repackageClasses = repackageClassesCheckBox .isSelected() ? ClassUtil.externalClassName(repackageClassesTextField .getText()) : null; configuration.keepAttributes = keepAttributesCheckBox .isSelected() ? ListUtil.commaSeparatedList(keepAttributesTextField .getText()) : null; configuration.newSourceFileAttribute = newSourceFileAttributeCheckBox .isSelected() ? newSourceFileAttributeTextField .getText() : null; configuration.adaptResourceFileNames = adaptResourceFileNamesCheckBox .isSelected() ? ListUtil.commaSeparatedList(adaptResourceFileNamesTextField .getText()) : null; configuration.adaptResourceFileContents = adaptResourceFileContentsCheckBox .isSelected() ? ListUtil.commaSeparatedList(adaptResourceFileContentsTextField.getText()) : null; configuration.preverify = preverifyCheckBox .isSelected(); configuration.microEdition = microEditionCheckBox .isSelected(); configuration.targetClassVersion = targetCheckBox .isSelected() ? ClassUtil.internalClassVersion(targetComboBox.getSelectedItem().toString()) : 0; configuration.verbose = verboseCheckBox .isSelected(); configuration.note = noteCheckBox .isSelected(); configuration.warn = warnCheckBox .isSelected(); configuration.ignoreWarnings = ignoreWarningsCheckBox .isSelected(); configuration.skipNonPublicLibraryClasses = skipNonPublicLibraryClassesCheckBox .isSelected(); configuration.skipNonPublicLibraryClassMembers = skipNonPublicLibraryClassMembersCheckBox.isSelected(); configuration.lastModified = forceProcessingCheckBox .isSelected() ? Long.MAX_VALUE : System.currentTimeMillis(); configuration.printSeeds = printSeedsCheckBox .isSelected() ? new File(printSeedsTextField .getText()) : null; configuration.printConfiguration = printConfigurationCheckBox .isSelected() ? new File(printConfigurationTextField .getText()) : null; configuration.dump = dumpCheckBox .isSelected() ? new File(dumpTextField .getText()) : null; return configuration; } /** * Looks in the given list for a class specification that is identical to * the given template. Returns true if it is found, and removes the matching * class specification as a side effect. */ private boolean findClassSpecification(ClassSpecification classSpecificationTemplate, List classSpecifications) { if (classSpecifications == null) { return false; } for (int index = 0; index < classSpecifications.size(); index++) { if (classSpecificationTemplate.equals(classSpecifications.get(index))) { // Remove the matching option as a side effect. classSpecifications.remove(index); return true; } } return false; } /** * Returns the subset of the given list of keep specifications, with * matching shrinking flag. */ private List filteredKeepSpecifications(List keepSpecifications, boolean allowShrinking) { List filteredKeepSpecifications = new ArrayList(); for (int index = 0; index < keepSpecifications.size(); index++) { KeepSpecification keepSpecification = (KeepSpecification)keepSpecifications.get(index); if (keepSpecification.allowShrinking == allowShrinking) { filteredKeepSpecifications.add(keepSpecification); } } return filteredKeepSpecifications; } /** * Looks in the given list for keep specifications that match the given * template. Returns a comma-separated string of class names from * matching keep specifications, and removes the matching keep * specifications as a side effect. */ private String findMatchingKeepSpecifications(KeepSpecification keepSpecificationTemplate, List keepSpecifications) { if (keepSpecifications == null) { return null; } StringBuffer buffer = null; for (int index = 0; index < keepSpecifications.size(); index++) { KeepSpecification listedKeepSpecification = (KeepSpecification)keepSpecifications.get(index); String className = listedKeepSpecification.className; keepSpecificationTemplate.className = className; if (keepSpecificationTemplate.equals(listedKeepSpecification)) { if (buffer == null) { buffer = new StringBuffer(); } else { buffer.append(','); } buffer.append(className == null ? "*" : ClassUtil.externalClassName(className)); // Remove the matching option as a side effect. keepSpecifications.remove(index--); } } return buffer == null ? null : buffer.toString(); } /** * Returns a class specification or keep specification, based on the given * template and the class name to be filled in. */ private ClassSpecification classSpecification(ClassSpecification classSpecificationTemplate, String className) { // Create a copy of the template. ClassSpecification classSpecification = (ClassSpecification)classSpecificationTemplate.clone(); // Set the class name in the copy. classSpecification.className = className.equals("") || className.equals("*") ? null : ClassUtil.internalClassName(className); // Return the modified copy. return classSpecification; } // Methods and internal classes related to actions. /** * Loads the given ProGuard configuration into the GUI. */ private void loadConfiguration(File file) { // Set the default directory and file in the file choosers. configurationChooser.setSelectedFile(file.getAbsoluteFile()); fileChooser.setCurrentDirectory(file.getAbsoluteFile().getParentFile()); try { // Parse the configuration file. ConfigurationParser parser = new ConfigurationParser(file); Configuration configuration = new Configuration(); try { parser.parse(configuration); // Let the GUI reflect the configuration. setProGuardConfiguration(configuration); } catch (ParseException ex) { JOptionPane.showMessageDialog(getContentPane(), msg("cantParseConfigurationFile", file.getPath()), msg("warning"), JOptionPane.ERROR_MESSAGE); } finally { parser.close(); } } catch (IOException ex) { JOptionPane.showMessageDialog(getContentPane(), msg("cantOpenConfigurationFile", file.getPath()), msg("warning"), JOptionPane.ERROR_MESSAGE); } } /** * Loads the given ProGuard configuration into the GUI. */ private void loadConfiguration(URL url) { try { // Parse the configuration file. ConfigurationParser parser = new ConfigurationParser(url); Configuration configuration = new Configuration(); try { parser.parse(configuration); // Let the GUI reflect the configuration. setProGuardConfiguration(configuration); } catch (ParseException ex) { JOptionPane.showMessageDialog(getContentPane(), msg("cantParseConfigurationFile", url), msg("warning"), JOptionPane.ERROR_MESSAGE); } finally { parser.close(); } } catch (IOException ex) { JOptionPane.showMessageDialog(getContentPane(), msg("cantOpenConfigurationFile", url), msg("warning"), JOptionPane.ERROR_MESSAGE); } } /** * Saves the current ProGuard configuration to the given file. */ private void saveConfiguration(File file) { try { // Save the configuration file. ConfigurationWriter writer = new ConfigurationWriter(file); writer.write(getProGuardConfiguration()); writer.close(); } catch (Exception ex) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -