Package jadx.api

Class JadxArgs

java.lang.Object
jadx.api.JadxArgs
All Implemented Interfaces:
Closeable, AutoCloseable

public class JadxArgs extends Object implements Closeable
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • DEFAULT_THREADS_COUNT

      public static final int DEFAULT_THREADS_COUNT
    • DEFAULT_NEW_LINE_STR

      public static final String DEFAULT_NEW_LINE_STR
    • DEFAULT_INDENT_STR

      public static final String DEFAULT_INDENT_STR
      See Also:
    • DEFAULT_OUT_DIR

      public static final String DEFAULT_OUT_DIR
      See Also:
    • DEFAULT_SRC_DIR

      public static final String DEFAULT_SRC_DIR
      See Also:
    • DEFAULT_RES_DIR

      public static final String DEFAULT_RES_DIR
      See Also:
    • inputFiles

      private List<File> inputFiles
    • outDir

      private File outDir
    • outDirSrc

      private File outDirSrc
    • outDirRes

      private File outDirRes
    • codeCache

      private ICodeCache codeCache
    • usageInfoCache

      private IUsageInfoCache usageInfoCache
      Usage data cache. Saves use places of classes, methods and fields between code reloads. Can be set to EmptyUsageInfoCache if code reload not needed.
    • codeWriterProvider

      private Function<JadxArgs,ICodeWriter> codeWriterProvider
    • threadsCount

      private int threadsCount
    • cfgOutput

      private boolean cfgOutput
    • rawCFGOutput

      private boolean rawCFGOutput
    • showInconsistentCode

      private boolean showInconsistentCode
    • useImports

      private boolean useImports
    • debugInfo

      private boolean debugInfo
    • insertDebugLines

      private boolean insertDebugLines
    • extractFinally

      private boolean extractFinally
    • inlineAnonymousClasses

      private boolean inlineAnonymousClasses
    • inlineMethods

      private boolean inlineMethods
    • allowInlineKotlinLambda

      private boolean allowInlineKotlinLambda
    • moveInnerClasses

      private boolean moveInnerClasses
    • skipResources

      private boolean skipResources
    • skipSources

      private boolean skipSources
    • useHeadersForDetectResourceExtensions

      private boolean useHeadersForDetectResourceExtensions
    • classFilter

      @Nullable private @Nullable Predicate<String> classFilter
      Predicate that allows to filter the classes to be process based on their full name
    • includeDependencies

      private boolean includeDependencies
      Save dependencies for classes accepted by classFilter
    • userRenamesMappingsPath

      private Path userRenamesMappingsPath
    • userRenamesMappingsMode

      private UserRenamesMappingsMode userRenamesMappingsMode
    • deobfuscationOn

      private boolean deobfuscationOn
    • useSourceNameAsClassNameAlias

      private UseSourceNameAsClassNameAlias useSourceNameAsClassNameAlias
    • sourceNameRepeatLimit

      private int sourceNameRepeatLimit
    • generatedRenamesMappingFile

      private File generatedRenamesMappingFile
    • generatedRenamesMappingFileMode

      private GeneratedRenamesMappingFileMode generatedRenamesMappingFileMode
    • resourceNameSource

      private ResourceNameSource resourceNameSource
    • deobfuscationMinLength

      private int deobfuscationMinLength
    • deobfuscationMaxLength

      private int deobfuscationMaxLength
    • deobfuscationWhitelist

      private List<String> deobfuscationWhitelist
      List of classes and packages (ends with '.*') to exclude from deobfuscation
    • aliasProvider

      private IAliasProvider aliasProvider
      Nodes alias provider for deobfuscator and rename visitor
    • renameCondition

      private IRenameCondition renameCondition
      Condition to rename node in deobfuscator
    • escapeUnicode

      private boolean escapeUnicode
    • replaceConsts

      private boolean replaceConsts
    • respectBytecodeAccModifiers

      private boolean respectBytecodeAccModifiers
    • exportGradleType

      @Nullable private @Nullable ExportGradleType exportGradleType
    • restoreSwitchOverString

      private boolean restoreSwitchOverString
    • skipXmlPrettyPrint

      private boolean skipXmlPrettyPrint
    • fsCaseSensitive

      private boolean fsCaseSensitive
    • renameFlags

      private Set<JadxArgs.RenameEnum> renameFlags
    • outputFormat

      private JadxArgs.OutputFormatEnum outputFormat
    • decompilationMode

      private DecompilationMode decompilationMode
    • codeData

      private ICodeData codeData
    • codeNewLineStr

      private String codeNewLineStr
    • codeIndentStr

      private String codeIndentStr
    • commentsLevel

      private CommentsLevel commentsLevel
    • integerFormat

      private IntegerFormat integerFormat
    • typeUpdatesLimitCount

      private int typeUpdatesLimitCount
      Maximum updates allowed total in method per one instruction. Should be more or equal 1, default value is 10.
    • useDxInput

      private boolean useDxInput
    • useKotlinMethodsForVarNames

      private JadxArgs.UseKotlinMethodsForVarNames useKotlinMethodsForVarNames
    • filesGetter

      private IJadxFilesGetter filesGetter
      Additional files structure info. Defaults to tmp dirs.
    • security

      private IJadxSecurity security
      Additional data validation and security checks
    • skipFilesSave

      private boolean skipFilesSave
      Don't save files (can be using for performance testing)
    • runDebugChecks

      private boolean runDebugChecks
      Run additional expensive checks to verify internal invariants and info integrity
    • disabledPasses

      private final List<String> disabledPasses
      Passes to exclude from processing.
    • pluginOptions

      private Map<String,String> pluginOptions
    • disabledPlugins

      private Set<String> disabledPlugins
    • pluginLoader

      private JadxPluginLoader pluginLoader
    • loadJadxClsSetFile

      private boolean loadJadxClsSetFile
  • Constructor Details

    • JadxArgs

      public JadxArgs()
  • Method Details

    • setRootDir

      public void setRootDir(File rootDir)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • getInputFiles

      public List<File> getInputFiles()
    • addInputFile

      public void addInputFile(File inputFile)
    • setInputFile

      public void setInputFile(File inputFile)
    • setInputFiles

      public void setInputFiles(List<File> inputFiles)
    • getOutDir

      public File getOutDir()
    • setOutDir

      public void setOutDir(File outDir)
    • getOutDirSrc

      public File getOutDirSrc()
    • setOutDirSrc

      public void setOutDirSrc(File outDirSrc)
    • getOutDirRes

      public File getOutDirRes()
    • setOutDirRes

      public void setOutDirRes(File outDirRes)
    • getThreadsCount

      public int getThreadsCount()
    • setThreadsCount

      public void setThreadsCount(int threadsCount)
    • isCfgOutput

      public boolean isCfgOutput()
    • setCfgOutput

      public void setCfgOutput(boolean cfgOutput)
    • isRawCFGOutput

      public boolean isRawCFGOutput()
    • setRawCFGOutput

      public void setRawCFGOutput(boolean rawCFGOutput)
    • isFallbackMode

      public boolean isFallbackMode()
    • setFallbackMode

      @Deprecated public void setFallbackMode(boolean fallbackMode)
      Deprecated.
      Deprecated: use 'decompilation mode' property
    • isShowInconsistentCode

      public boolean isShowInconsistentCode()
    • setShowInconsistentCode

      public void setShowInconsistentCode(boolean showInconsistentCode)
    • isUseImports

      public boolean isUseImports()
    • setUseImports

      public void setUseImports(boolean useImports)
    • isDebugInfo

      public boolean isDebugInfo()
    • setDebugInfo

      public void setDebugInfo(boolean debugInfo)
    • isInsertDebugLines

      public boolean isInsertDebugLines()
    • setInsertDebugLines

      public void setInsertDebugLines(boolean insertDebugLines)
    • isInlineAnonymousClasses

      public boolean isInlineAnonymousClasses()
    • setInlineAnonymousClasses

      public void setInlineAnonymousClasses(boolean inlineAnonymousClasses)
    • isInlineMethods

      public boolean isInlineMethods()
    • setInlineMethods

      public void setInlineMethods(boolean inlineMethods)
    • isAllowInlineKotlinLambda

      public boolean isAllowInlineKotlinLambda()
    • setAllowInlineKotlinLambda

      public void setAllowInlineKotlinLambda(boolean allowInlineKotlinLambda)
    • isMoveInnerClasses

      public boolean isMoveInnerClasses()
    • setMoveInnerClasses

      public void setMoveInnerClasses(boolean moveInnerClasses)
    • isExtractFinally

      public boolean isExtractFinally()
    • setExtractFinally

      public void setExtractFinally(boolean extractFinally)
    • isSkipResources

      public boolean isSkipResources()
    • setSkipResources

      public void setSkipResources(boolean skipResources)
    • isSkipSources

      public boolean isSkipSources()
    • setSkipSources

      public void setSkipSources(boolean skipSources)
    • setIncludeDependencies

      public void setIncludeDependencies(boolean includeDependencies)
    • isIncludeDependencies

      public boolean isIncludeDependencies()
    • getClassFilter

      public Predicate<String> getClassFilter()
    • setClassFilter

      public void setClassFilter(Predicate<String> classFilter)
    • getUserRenamesMappingsPath

      public Path getUserRenamesMappingsPath()
    • setUserRenamesMappingsPath

      public void setUserRenamesMappingsPath(Path path)
    • getUserRenamesMappingsMode

      public UserRenamesMappingsMode getUserRenamesMappingsMode()
    • setUserRenamesMappingsMode

      public void setUserRenamesMappingsMode(UserRenamesMappingsMode mode)
    • isDeobfuscationOn

      public boolean isDeobfuscationOn()
    • setDeobfuscationOn

      public void setDeobfuscationOn(boolean deobfuscationOn)
    • isDeobfuscationForceSave

      public boolean isDeobfuscationForceSave()
    • setDeobfuscationForceSave

      public void setDeobfuscationForceSave(boolean deobfuscationForceSave)
    • getGeneratedRenamesMappingFileMode

      public GeneratedRenamesMappingFileMode getGeneratedRenamesMappingFileMode()
    • setGeneratedRenamesMappingFileMode

      public void setGeneratedRenamesMappingFileMode(GeneratedRenamesMappingFileMode mode)
    • getUseSourceNameAsClassNameAlias

      public UseSourceNameAsClassNameAlias getUseSourceNameAsClassNameAlias()
    • setUseSourceNameAsClassNameAlias

      public void setUseSourceNameAsClassNameAlias(UseSourceNameAsClassNameAlias useSourceNameAsClassNameAlias)
    • getSourceNameRepeatLimit

      public int getSourceNameRepeatLimit()
    • setSourceNameRepeatLimit

      public void setSourceNameRepeatLimit(int sourceNameRepeatLimit)
    • isUseSourceNameAsClassAlias

      @Deprecated public boolean isUseSourceNameAsClassAlias()
      Deprecated.
    • setUseSourceNameAsClassAlias

      @Deprecated public void setUseSourceNameAsClassAlias(boolean useSourceNameAsClassAlias)
    • getDeobfuscationMinLength

      public int getDeobfuscationMinLength()
    • setDeobfuscationMinLength

      public void setDeobfuscationMinLength(int deobfuscationMinLength)
    • getDeobfuscationMaxLength

      public int getDeobfuscationMaxLength()
    • setDeobfuscationMaxLength

      public void setDeobfuscationMaxLength(int deobfuscationMaxLength)
    • getDeobfuscationWhitelist

      public List<String> getDeobfuscationWhitelist()
    • setDeobfuscationWhitelist

      public void setDeobfuscationWhitelist(List<String> deobfuscationWhitelist)
    • getGeneratedRenamesMappingFile

      public File getGeneratedRenamesMappingFile()
    • setGeneratedRenamesMappingFile

      public void setGeneratedRenamesMappingFile(File file)
    • getResourceNameSource

      public ResourceNameSource getResourceNameSource()
    • setResourceNameSource

      public void setResourceNameSource(ResourceNameSource resourceNameSource)
    • getAliasProvider

      public IAliasProvider getAliasProvider()
    • setAliasProvider

      public void setAliasProvider(IAliasProvider aliasProvider)
    • getRenameCondition

      public IRenameCondition getRenameCondition()
    • setRenameCondition

      public void setRenameCondition(IRenameCondition renameCondition)
    • isEscapeUnicode

      public boolean isEscapeUnicode()
    • setEscapeUnicode

      public void setEscapeUnicode(boolean escapeUnicode)
    • isReplaceConsts

      public boolean isReplaceConsts()
    • setReplaceConsts

      public void setReplaceConsts(boolean replaceConsts)
    • isRespectBytecodeAccModifiers

      public boolean isRespectBytecodeAccModifiers()
    • setRespectBytecodeAccModifiers

      public void setRespectBytecodeAccModifiers(boolean respectBytecodeAccModifiers)
    • isExportAsGradleProject

      public boolean isExportAsGradleProject()
    • setExportAsGradleProject

      public void setExportAsGradleProject(boolean exportAsGradleProject)
    • getExportGradleType

      @Nullable public @Nullable ExportGradleType getExportGradleType()
    • setExportGradleType

      public void setExportGradleType(@Nullable @Nullable ExportGradleType exportGradleType)
    • isRestoreSwitchOverString

      public boolean isRestoreSwitchOverString()
    • setRestoreSwitchOverString

      public void setRestoreSwitchOverString(boolean restoreSwitchOverString)
    • isSkipXmlPrettyPrint

      public boolean isSkipXmlPrettyPrint()
    • setSkipXmlPrettyPrint

      public void setSkipXmlPrettyPrint(boolean skipXmlPrettyPrint)
    • isFsCaseSensitive

      public boolean isFsCaseSensitive()
    • setFsCaseSensitive

      public void setFsCaseSensitive(boolean fsCaseSensitive)
    • isRenameCaseSensitive

      public boolean isRenameCaseSensitive()
    • setRenameCaseSensitive

      public void setRenameCaseSensitive(boolean renameCaseSensitive)
    • isRenameValid

      public boolean isRenameValid()
    • setRenameValid

      public void setRenameValid(boolean renameValid)
    • isRenamePrintable

      public boolean isRenamePrintable()
    • setRenamePrintable

      public void setRenamePrintable(boolean renamePrintable)
    • updateRenameFlag

      private void updateRenameFlag(boolean enabled, JadxArgs.RenameEnum flag)
    • setRenameFlags

      public void setRenameFlags(Set<JadxArgs.RenameEnum> renameFlags)
    • getRenameFlags

      public Set<JadxArgs.RenameEnum> getRenameFlags()
    • getOutputFormat

      public JadxArgs.OutputFormatEnum getOutputFormat()
    • isJsonOutput

      public boolean isJsonOutput()
    • setOutputFormat

      public void setOutputFormat(JadxArgs.OutputFormatEnum outputFormat)
    • getDecompilationMode

      public DecompilationMode getDecompilationMode()
    • setDecompilationMode

      public void setDecompilationMode(DecompilationMode decompilationMode)
    • getCodeCache

      public ICodeCache getCodeCache()
    • setCodeCache

      public void setCodeCache(ICodeCache codeCache)
    • getCodeWriterProvider

      public Function<JadxArgs,ICodeWriter> getCodeWriterProvider()
    • setCodeWriterProvider

      public void setCodeWriterProvider(Function<JadxArgs,ICodeWriter> codeWriterProvider)
    • getUsageInfoCache

      public IUsageInfoCache getUsageInfoCache()
    • setUsageInfoCache

      public void setUsageInfoCache(IUsageInfoCache usageInfoCache)
    • getCodeData

      public ICodeData getCodeData()
    • setCodeData

      public void setCodeData(ICodeData codeData)
    • getCodeIndentStr

      public String getCodeIndentStr()
    • setCodeIndentStr

      public void setCodeIndentStr(String codeIndentStr)
    • getCodeNewLineStr

      public String getCodeNewLineStr()
    • setCodeNewLineStr

      public void setCodeNewLineStr(String codeNewLineStr)
    • getCommentsLevel

      public CommentsLevel getCommentsLevel()
    • setCommentsLevel

      public void setCommentsLevel(CommentsLevel commentsLevel)
    • getIntegerFormat

      public IntegerFormat getIntegerFormat()
    • setIntegerFormat

      public void setIntegerFormat(IntegerFormat format)
    • getTypeUpdatesLimitCount

      public int getTypeUpdatesLimitCount()
    • setTypeUpdatesLimitCount

      public void setTypeUpdatesLimitCount(int typeUpdatesLimitCount)
    • isUseDxInput

      public boolean isUseDxInput()
    • setUseDxInput

      public void setUseDxInput(boolean useDxInput)
    • getUseKotlinMethodsForVarNames

      public JadxArgs.UseKotlinMethodsForVarNames getUseKotlinMethodsForVarNames()
    • setUseKotlinMethodsForVarNames

      public void setUseKotlinMethodsForVarNames(JadxArgs.UseKotlinMethodsForVarNames useKotlinMethodsForVarNames)
    • getFilesGetter

      public IJadxFilesGetter getFilesGetter()
    • setFilesGetter

      public void setFilesGetter(IJadxFilesGetter filesGetter)
    • getSecurity

      public IJadxSecurity getSecurity()
    • setSecurity

      public void setSecurity(IJadxSecurity security)
    • isSkipFilesSave

      public boolean isSkipFilesSave()
    • setSkipFilesSave

      public void setSkipFilesSave(boolean skipFilesSave)
    • isRunDebugChecks

      public boolean isRunDebugChecks()
    • setRunDebugChecks

      public void setRunDebugChecks(boolean runDebugChecks)
    • getDisabledPasses

      public List<String> getDisabledPasses()
    • getPluginOptions

      public Map<String,String> getPluginOptions()
    • setPluginOptions

      public void setPluginOptions(Map<String,String> pluginOptions)
    • getDisabledPlugins

      public Set<String> getDisabledPlugins()
    • setDisabledPlugins

      public void setDisabledPlugins(Set<String> disabledPlugins)
    • getPluginLoader

      public JadxPluginLoader getPluginLoader()
    • setPluginLoader

      public void setPluginLoader(JadxPluginLoader pluginLoader)
    • isLoadJadxClsSetFile

      public boolean isLoadJadxClsSetFile()
    • setLoadJadxClsSetFile

      public void setLoadJadxClsSetFile(boolean loadJadxClsSetFile)
    • setUseHeadersForDetectResourceExtensions

      public void setUseHeadersForDetectResourceExtensions(boolean useHeadersForDetectResourceExtensions)
    • isUseHeadersForDetectResourceExtensions

      public boolean isUseHeadersForDetectResourceExtensions()
    • makeCodeArgsHash

      public String makeCodeArgsHash(@Nullable @Nullable JadxDecompiler decompiler)
      Hash of all options that can change result code
    • buildPluginsHash

      private static String buildPluginsHash(@Nullable @Nullable JadxDecompiler decompiler)
    • toString

      public String toString()
      Overrides:
      toString in class Object