public class org.jf.baksmali.AnalysisArguments
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jf.baksmali.AnalysisArguments
super_class: java.lang.Object
{
public java.util.List<java.lang.String> bootClassPath;
descriptor: Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-b", "--bootclasspath", "--bcp"}, description = "A colon separated list of the files to include in the bootclasspath when analyzing the dex file. If not specified, baksmali will attempt to choose an appropriate default. When analyzing oat files, this can simply be the path to the device's boot.oat file. A single empty string can be used to specify that an empty bootclasspath should be used. (e.g. --bootclasspath \"\") See baksmali help classpath for more information.", splitter = Lorg/jf/util/jcommander/ColonParameterSplitter;)
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"classpath"})
public java.util.List<java.lang.String> classPath;
descriptor: Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-c", "--classpath", "--cp"}, description = "A colon separated list of additional files to include in the classpath when analyzing the dex file. These will be added to the classpath after any bootclasspath entries.", splitter = Lorg/jf/util/jcommander/ColonParameterSplitter;)
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"classpath"})
public java.util.List<java.lang.String> classPathDirectories;
descriptor: Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-d", "--classpath-dir", "--cpd", "--dir"}, description = "A directory to search for classpath files. This option can be used multiple times to specify multiple directories to search. They will be searched in the order they are provided.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"dir"})
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aconst_null
putfield org.jf.baksmali.AnalysisArguments.bootClassPath:Ljava/util/List;
2: aload 0
invokestatic com.google.common.collect.Lists.newArrayList:()Ljava/util/ArrayList;
putfield org.jf.baksmali.AnalysisArguments.classPath:Ljava/util/List;
3: aload 0
aconst_null
putfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jf/baksmali/AnalysisArguments;
public org.jf.dexlib2.analysis.ClassPath loadClassPathForDexFile(java.io.File, org.jf.dexlib2.iface.MultiDexContainer$DexEntry<? extends org.jf.dexlib2.dexbacked.DexBackedDexFile>, boolean);
descriptor: (Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;Z)Lorg/jf/dexlib2/analysis/ClassPath;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
iload 3
bipush -2
invokevirtual org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile:(Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;ZI)Lorg/jf/dexlib2/analysis/ClassPath;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jf/baksmali/AnalysisArguments;
0 1 1 dexFileDir Ljava/io/File;
0 1 2 dexEntry Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry<+Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;>;
0 1 3 checkPackagePrivateAccess Z
Exceptions:
throws java.io.IOException
Signature: (Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry<+Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;>;Z)Lorg/jf/dexlib2/analysis/ClassPath;
RuntimeVisibleAnnotations:
javax.annotation.Nonnull()
RuntimeVisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
javax.annotation.Nonnull()
METHOD_FORMAL_PARAMETER
javax.annotation.Nonnull()
METHOD_RETURN
javax.annotation.Nonnull()
RuntimeVisibleParameterAnnotations:
0:
javax.annotation.Nonnull()
1:
javax.annotation.Nonnull()
2:
MethodParameters:
Name Flags
dexFileDir
dexEntry
checkPackagePrivateAccess
public org.jf.dexlib2.analysis.ClassPath loadClassPathForDexFile(java.io.File, org.jf.dexlib2.iface.MultiDexContainer$DexEntry<? extends org.jf.dexlib2.dexbacked.DexBackedDexFile>, boolean, int);
descriptor: (Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;ZI)Lorg/jf/dexlib2/analysis/ClassPath;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
invokeinterface org.jf.dexlib2.iface.MultiDexContainer$DexEntry.getContainer:()Lorg/jf/dexlib2/iface/MultiDexContainer;
astore 6
start local 6 1: iload 4
bipush -2
if_icmpne 8
2: aload 6
instanceof org.jf.dexlib2.dexbacked.OatFile
ifeq 6
3: iconst_1
istore 3
4: aload 6
checkcast org.jf.dexlib2.dexbacked.OatFile
invokevirtual org.jf.dexlib2.dexbacked.OatFile.getOatVersion:()I
istore 4
5: goto 9
6: StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int top org.jf.dexlib2.iface.MultiDexContainer
StackMap stack:
aload 2
invokeinterface org.jf.dexlib2.iface.MultiDexContainer$DexEntry.getDexFile:()Lorg/jf/dexlib2/iface/DexFile;
checkcast org.jf.dexlib2.dexbacked.DexBackedDexFile
invokevirtual org.jf.dexlib2.dexbacked.DexBackedDexFile.getOpcodes:()Lorg/jf/dexlib2/Opcodes;
getfield org.jf.dexlib2.Opcodes.api:I
invokestatic org.jf.dexlib2.VersionMap.mapApiToArtVersion:(I)I
istore 4
7: goto 9
8: StackMap locals:
StackMap stack:
iconst_1
istore 3
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
ifnull 10
aload 0
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 11
10: StackMap locals:
StackMap stack:
aload 0
iconst_1
anewarray java.lang.String
dup
iconst_0
aload 1
invokevirtual java.io.File.getPath:()Ljava/lang/String;
aastore
invokestatic com.google.common.collect.Lists.newArrayList:([Ljava/lang/Object;)Ljava/util/ArrayList;
putfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
11: StackMap locals:
StackMap stack:
invokestatic com.google.common.collect.Lists.newArrayList:()Ljava/util/ArrayList;
astore 7
start local 7 12: aload 0
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
ifnull 24
13: aload 0
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 23
StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int top org.jf.dexlib2.iface.MultiDexContainer java.util.List top java.util.Iterator
StackMap stack:
14: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 8
start local 8 15: new java.io.File
dup
aload 8
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 10
start local 10 16: aload 10
invokevirtual java.io.File.exists:()Z
ifne 19
17: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Warning: directory %s does not exist. Ignoring."
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 8
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
18: goto 23
StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int top org.jf.dexlib2.iface.MultiDexContainer java.util.List java.lang.String java.util.Iterator java.io.File
StackMap stack:
19: aload 10
invokevirtual java.io.File.isDirectory:()Z
ifne 22
20: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Warning: %s is not a directory. Ignoring."
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 8
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: goto 23
22: StackMap locals:
StackMap stack:
aload 7
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 10 end local 8 23: StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int top org.jf.dexlib2.iface.MultiDexContainer java.util.List top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
24: StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int top org.jf.dexlib2.iface.MultiDexContainer java.util.List
StackMap stack:
aload 0
getfield org.jf.baksmali.AnalysisArguments.bootClassPath:Ljava/util/List;
ifnonnull 27
25: new org.jf.dexlib2.analysis.ClassPathResolver
dup
aload 7
aload 0
getfield org.jf.baksmali.AnalysisArguments.classPath:Ljava/util/List;
aload 2
invokespecial org.jf.dexlib2.analysis.ClassPathResolver.<init>:(Ljava/util/List;Ljava/util/List;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;)V
astore 5
start local 5 26: goto 33
end local 5 StackMap locals:
StackMap stack:
27: aload 0
getfield org.jf.baksmali.AnalysisArguments.bootClassPath:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmpne 32
aload 0
getfield org.jf.baksmali.AnalysisArguments.bootClassPath:Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.lang.String.length:()I
ifne 32
28: new org.jf.dexlib2.analysis.ClassPathResolver
dup
29: invokestatic com.google.common.collect.ImmutableList.of:()Lcom/google/common/collect/ImmutableList;
invokestatic com.google.common.collect.ImmutableList.of:()Lcom/google/common/collect/ImmutableList;
aload 0
getfield org.jf.baksmali.AnalysisArguments.classPath:Ljava/util/List;
aload 2
30: invokespecial org.jf.dexlib2.analysis.ClassPathResolver.<init>:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;)V
astore 5
start local 5 31: goto 33
end local 5 32: StackMap locals:
StackMap stack:
new org.jf.dexlib2.analysis.ClassPathResolver
dup
aload 7
aload 0
getfield org.jf.baksmali.AnalysisArguments.bootClassPath:Ljava/util/List;
aload 0
getfield org.jf.baksmali.AnalysisArguments.classPath:Ljava/util/List;
aload 2
invokespecial org.jf.dexlib2.analysis.ClassPathResolver.<init>:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;)V
astore 5
start local 5 33: StackMap locals: org.jf.baksmali.AnalysisArguments java.io.File org.jf.dexlib2.iface.MultiDexContainer$DexEntry int int org.jf.dexlib2.analysis.ClassPathResolver org.jf.dexlib2.iface.MultiDexContainer java.util.List
StackMap stack:
iload 4
ifne 35
aload 6
instanceof org.jf.dexlib2.dexbacked.OatFile
ifeq 35
34: aload 6
checkcast org.jf.dexlib2.dexbacked.OatFile
invokevirtual org.jf.dexlib2.dexbacked.OatFile.getOatVersion:()I
istore 4
35: StackMap locals:
StackMap stack:
new org.jf.dexlib2.analysis.ClassPath
dup
aload 5
invokevirtual org.jf.dexlib2.analysis.ClassPathResolver.getResolvedClassProviders:()Ljava/util/List;
iload 3
iload 4
invokespecial org.jf.dexlib2.analysis.ClassPath.<init>:(Ljava/lang/Iterable;ZI)V
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lorg/jf/baksmali/AnalysisArguments;
0 36 1 dexFileDir Ljava/io/File;
0 36 2 dexEntry Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry<+Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;>;
0 36 3 checkPackagePrivateAccess Z
0 36 4 oatVersion I
26 27 5 resolver Lorg/jf/dexlib2/analysis/ClassPathResolver;
31 32 5 resolver Lorg/jf/dexlib2/analysis/ClassPathResolver;
33 36 5 resolver Lorg/jf/dexlib2/analysis/ClassPathResolver;
1 36 6 container Lorg/jf/dexlib2/iface/MultiDexContainer<+Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;>;
12 36 7 filteredClassPathDirectories Ljava/util/List<Ljava/lang/String;>;
15 23 8 dir Ljava/lang/String;
16 23 10 file Ljava/io/File;
Exceptions:
throws java.io.IOException
Signature: (Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry<+Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;>;ZI)Lorg/jf/dexlib2/analysis/ClassPath;
RuntimeVisibleAnnotations:
javax.annotation.Nonnull()
RuntimeVisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
javax.annotation.Nonnull()
METHOD_FORMAL_PARAMETER
javax.annotation.Nonnull()
METHOD_RETURN
javax.annotation.Nonnull()
RuntimeVisibleParameterAnnotations:
0:
javax.annotation.Nonnull()
1:
javax.annotation.Nonnull()
2:
3:
MethodParameters:
Name Flags
dexFileDir
dexEntry
checkPackagePrivateAccess
oatVersion
}
SourceFile: "AnalysisArguments.java"
NestMembers:
org.jf.baksmali.AnalysisArguments$CheckPackagePrivateArgument
InnerClasses:
public CheckPackagePrivateArgument = org.jf.baksmali.AnalysisArguments$CheckPackagePrivateArgument of org.jf.baksmali.AnalysisArguments
public abstract DexEntry = org.jf.dexlib2.iface.MultiDexContainer$DexEntry of org.jf.dexlib2.iface.MultiDexContainer