Package jadx.api

Class JadxDecompiler

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

public final class JadxDecompiler extends Object implements Closeable
Jadx API usage example:
 

 JadxArgs args = new JadxArgs();
 args.getInputFiles().add(new File("test.apk"));
 args.setOutDir(new File("jadx-test-output"));
 try (JadxDecompiler jadx = new JadxDecompiler(args)) {
    jadx.load();
    jadx.save();
 }
 
 

Instead of 'save()' you can iterate over decompiled classes:

 

  for(JavaClass cls : jadx.getClasses()) {
      System.out.println(cls.getCode());
  }
 
 
  • Field Details

  • Constructor Details

    • JadxDecompiler

      public JadxDecompiler()
    • JadxDecompiler

      public JadxDecompiler(JadxArgs args)
  • Method Details

    • load

      public void load()
    • reloadPasses

      public void reloadPasses()
      Reload passes and plugins without processing classes and inputs
    • loadInputFiles

      private void loadInputFiles()
    • reset

      private void reset()
    • close

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

      private void closeAll(List<? extends Closeable> list)
    • loadPlugins

      private void loadPlugins()
    • unloadPlugins

      private void unloadPlugins()
    • loadFinished

      private void loadFinished()
    • registerPlugin

      public void registerPlugin(JadxPlugin plugin)
    • getVersion

      public static String getVersion()
    • save

      public void save()
    • save

      public void save(int intervalInMillis, JadxDecompiler.ProgressListener listener)
    • saveSources

      public void saveSources()
    • saveResources

      public void saveResources()
    • save

      private void save(boolean saveSources, boolean saveResources)
    • getSaveTaskExecutor

      public ITaskExecutor getSaveTaskExecutor()
    • getSaveExecutor

      @Deprecated(forRemoval=true) public ExecutorService getSaveExecutor()
      Deprecated, for removal: This API element is subject to removal in a future version.
    • getSaveTasks

      @Deprecated(forRemoval=true) public List<Runnable> getSaveTasks()
      Deprecated, for removal: This API element is subject to removal in a future version.
    • getSaveTasks

      private TaskExecutor getSaveTasks(boolean saveSources, boolean saveResources)
    • appendResourcesSaveTasks

      private void appendResourcesSaveTasks(ITaskExecutor executor, File outDir)
    • collectCodeSources

      private Set<String> collectCodeSources()
    • appendSourcesSave

      private void appendSourcesSave(ITaskExecutor executor, File outDir)
    • filterClasses

      private List<JavaClass> filterClasses(List<JavaClass> classes)
    • getClasses

      public List<JavaClass> getClasses()
    • getClassesWithInners

      public List<JavaClass> getClassesWithInners()
    • getResources

      public List<ResourceFile> getResources()
    • getPackages

      public List<JavaPackage> getPackages()
    • getErrorsCount

      public int getErrorsCount()
    • getWarnsCount

      public int getWarnsCount()
    • printErrorsReport

      public void printErrorsReport()
    • getRoot

      @Internal public RootNode getRoot()
      Internal API. Not Stable!
    • convertClassNode

      @Internal JavaClass convertClassNode(ClassNode cls)
      Get JavaClass by ClassNode without loading and decompilation
    • convertFieldNode

      @Internal JavaField convertFieldNode(FieldNode fld)
    • convertMethodNode

      @Internal JavaMethod convertMethodNode(MethodNode mth)
    • convertPackageNode

      @Internal JavaPackage convertPackageNode(PackageNode pkg)
    • searchJavaClassByOrigFullName

      @Nullable public @Nullable JavaClass searchJavaClassByOrigFullName(String fullName)
    • searchClassNodeByOrigFullName

      @Nullable public @Nullable ClassNode searchClassNodeByOrigFullName(String fullName)
    • searchJavaClassOrItsParentByOrigFullName

      @Nullable public @Nullable JavaClass searchJavaClassOrItsParentByOrigFullName(String fullName)
    • searchJavaClassByAliasFullName

      @Nullable public @Nullable JavaClass searchJavaClassByAliasFullName(String fullName)
    • getJavaNodeByRef

      @Nullable public @Nullable JavaNode getJavaNodeByRef(ICodeNodeRef ann)
    • getJavaNodeByCodeAnnotation

      @Nullable public @Nullable JavaNode getJavaNodeByCodeAnnotation(@Nullable @Nullable ICodeInfo codeInfo, @Nullable @Nullable ICodeAnnotation ann)
    • resolveVarNode

      private JavaVariable resolveVarNode(VarNode varNode)
    • resolveVarRef

      @Nullable private @Nullable JavaVariable resolveVarRef(ICodeInfo codeInfo, VarRef varRef)
    • convertNodes

      List<JavaNode> convertNodes(Collection<? extends ICodeNodeRef> nodesList)
    • getJavaNodeAtPosition

      @Nullable public @Nullable JavaNode getJavaNodeAtPosition(ICodeInfo codeInfo, int pos)
    • getClosestJavaNode

      @Nullable public @Nullable JavaNode getClosestJavaNode(ICodeInfo codeInfo, int pos)
    • getEnclosingNode

      @Nullable public @Nullable JavaNode getEnclosingNode(ICodeInfo codeInfo, int pos)
    • reloadCodeData

      public void reloadCodeData()
    • getArgs

      public JadxArgs getArgs()
    • getPluginManager

      public JadxPluginManager getPluginManager()
    • getDecompileScheduler

      public IDecompileScheduler getDecompileScheduler()
    • events

      public IJadxEvents events()
    • setEventsImpl

      public void setEventsImpl(IJadxEvents eventsImpl)
    • addCustomCodeLoader

      public void addCustomCodeLoader(ICodeLoader customCodeLoader)
    • getCustomCodeLoaders

      public List<ICodeLoader> getCustomCodeLoaders()
    • addCustomResourcesLoader

      public void addCustomResourcesLoader(CustomResourcesLoader loader)
    • getCustomResourcesLoaders

      public List<CustomResourcesLoader> getCustomResourcesLoaders()
    • addCustomPass

      public void addCustomPass(JadxPass pass)
    • getResourcesLoader

      public ResourcesLoader getResourcesLoader()
    • getZipReader

      public ZipReader getZipReader()
    • addCloseable

      public void addCloseable(Closeable closeable)
    • toString

      public String toString()
      Overrides:
      toString in class Object