1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 5b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Copyright (c) 2002-2013 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.io.File; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport java.util.List; 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * The ProGuard configuration. 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @see ProGuard 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic class Configuration 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 35b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public static final File STD_OUT = new File(""); 36b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 37b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Input and output options. 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of input and output entries (jars, wars, ears, zips, and directories). 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public ClassPath programJars; 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of library entries (jars, wars, ears, zips, and directories). 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public ClassPath libraryJars; 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to skip non-public library classes while reading 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * library jars. 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 56b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public boolean skipNonPublicLibraryClasses = false; 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to skip non-public library class members while reading 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * library classes. 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean skipNonPublicLibraryClassMembers = true; 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying directories to be kept in 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * the output directories or the output jars. A <code>null</code> list 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * means no directories. An empty list means all directories. The directory 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * names may contain "**", "*", or "?" wildcards, and they may be preceded 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * by the "!" negator. 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List keepDirectories; 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies the version number of the output classes, or 0 if the version 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * number can be left unchanged. 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int targetClassVersion; 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies the last modification time of this configuration. This time 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * is necessary to check whether the input has to be processed. Setting it 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * to Long.MAX_VALUE forces processing, even if the modification times 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of the output appear more recent than the modification times of the 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * input. 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public long lastModified = 0L; 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Keep options. 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of {@link KeepClassSpecification} instances, whose class names and 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * class member names are to be kept from shrinking, optimization, and/or 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * obfuscation. 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List keep; 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional output file for listing the kept seeds. 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An empty file name means the standard output. 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File printSeeds; 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Shrinking options. 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the code should be shrunk. 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean shrink = true; 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional output file for listing the unused classes and class 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * members. An empty file name means the standard output. 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File printUsage; 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of {@link ClassSpecification} instances, for which an explanation 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * is to be printed, why they are kept in the shrinking step. 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List whyAreYouKeeping; 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Optimization options. 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the code should be optimized. 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean optimize = true; 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying the optimizations to be 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * performed. A <code>null</code> list means all optimizations. The 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * optimization names may contain "*" or "?" wildcards, and they may 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * be preceded by the "!" negator. 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List optimizations; 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies the number of optimization passes. 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int optimizationPasses = 1; 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of {@link ClassSpecification} instances, whose methods are 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * assumed to have no side effects. 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List assumeNoSideEffects; 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the access of class members can be modified. 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean allowAccessModification = false; 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether interfaces may be merged aggressively. 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean mergeInterfacesAggressively = false; 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Obfuscation options. 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the code should be obfuscated. 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean obfuscate = true; 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional output file for listing the obfuscation mapping. 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An empty file name means the standard output. 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File printMapping; 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional input file for reading an obfuscation mapping. 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File applyMapping; 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional name of a file containing obfuscated class member names. 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File obfuscationDictionary; 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional name of a file containing obfuscated class names. 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File classObfuscationDictionary; 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional name of a file containing obfuscated package names. 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File packageObfuscationDictionary; 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to apply aggressive name overloading on class members. 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean overloadAggressively = false; 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to generate globally unique class member names. 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean useUniqueClassMemberNames = false; 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether obfuscated packages and classes can get mixed-case names. 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean useMixedCaseClassNames = true; 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying package names to be kept. 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A <code>null</code> list means no names. An empty list means all 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * names. The package names may contain "**", "*", or "?" wildcards, and 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * they may be preceded by the "!" negator. 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List keepPackageNames; 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional base package if the obfuscated package hierarchy is to be 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * flattened, <code>null</code> otherwise. 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String flattenPackageHierarchy; 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional base package if the obfuscated classes are to be repackaged 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * into a single package, <code>null</code> otherwise. 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String repackageClasses; 233b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 234b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 235b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying optional attributes to be kept. 236b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A <code>null</code> list means no attributes. An empty list means all 237b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * attributes. The attribute names may contain "*" or "?" wildcards, and 238b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * they may be preceded by the "!" negator. 239b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 240b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List keepAttributes; 241b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 242b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 243b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Specifies whether method parameter names and types should be kept for 244b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * methods that are not obfuscated. This is achieved by keeping partial 245b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * "LocalVariableTable" and "LocalVariableTypeTable" attributes. 246b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang */ 247b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public boolean keepParameterNames = false; 248b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 249b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang /** 250b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional replacement for all SourceFile attributes. 251b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 252b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String newSourceFileAttribute; 253b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 254b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 255b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * A list of <code>String</code>s specifying a filter for classes whose 256b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * string constants are to be adapted, based on corresponding obfuscated 257b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * class names. 258b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 259b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List adaptClassStrings; 260b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 261b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 262b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying a filter for files whose 263b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * names are to be adapted, based on corresponding obfuscated class names. 264b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 265b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List adaptResourceFileNames; 266b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 267b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 268b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying a filter for files whose 269b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * contents are to be adapted, based on obfuscated class names. 270b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 271b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List adaptResourceFileContents; 272b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 273b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 274b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Preverification options. 275b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 276b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 277b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 278b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the code should be preverified. 279b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 280b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean preverify = true; 281b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 282b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 283b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether the code should be preverified for Java Micro Edition 284b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * (creating StackMap attributes) instead of for Java Standard Edition 285b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * (creating StackMapTable attributes). 286b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 287b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean microEdition = false; 288b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 289b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 290b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // General options. 291b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /////////////////////////////////////////////////////////////////////////// 292b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 293b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 294b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to print verbose messages. 295b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 296b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean verbose = false; 297b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 298b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 299b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying a filter for the classes for 300b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * which not to print notes, if there are noteworthy potential problems. 301b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A <code>null</code> list means all classes. The class names may contain 302b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * "**", "*", or "?" wildcards, and they may be preceded by the "!" negator. 303b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 304b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List note = null; 305b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 306b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 307b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A list of <code>String</code>s specifying a filter for the classes for 308b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * which not to print warnings, if there are any problems. 309b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A <code>null</code> list means all classes. The class names may contain 310b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * "**", "*", or "?" wildcards, and they may be preceded by the "!" negator. 311b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 312b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public List warn = null; 313b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 314b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 315b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Specifies whether to ignore any warnings. 316b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 317b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean ignoreWarnings = false; 318b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 319b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 320b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional output file for printing out the configuration that ProGuard 321b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * is using (with included files and replaced variables). 322b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An empty file name means the standard output. 323b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 324b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File printConfiguration; 325b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 326b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 327b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * An optional output file for printing out the processed code in a more 328b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * or less readable form. An empty file name means the standard output. 329b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 330b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public File dump; 331b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 332