public SmaliClassDetailLoader(ZipFile apkFile,boolean translateInstructions){
  ArrayList<ZipEntry> dexEntries=new ArrayList<ZipEntry>();
  dexEntries.add(apkFile.getEntry("classes.dex"));
  for (int i=2; i < 99; ++i) {
    final ZipEntry e=apkFile.getEntry("classes" + i + ".dex");
    if (e != null) {
      dexEntries.add(e);
    }
 else {
      break;
    }
  }
  final int n=dexEntries.size();
  if (n == 0) {
    Log.err("Source apk does not have any dex files");
  }
  this.translateInstructions=translateInstructions;
  this.resolver=translateInstructions ? new InvocationResolver() : null;
  final Opcodes opcodes=Opcodes.forApi(Settings.apiLevel);
  try {
    dexFiles=new DexFile[n];
    for (int i=0; i < n; ++i) {
      dexFiles[i]=DexBackedDexFile.fromInputStream(opcodes,new BufferedInputStream(apkFile.getInputStream(dexEntries.get(i))));
    }
  }
 catch (  IOException e) {
    Log.err("failed to process the source apk file");
    Log.err(e);
  }
}

public SmaliClassDetailLoader ( ZipFile apkFile , boolean translateInstructions ) { ArrayList < ZipEntry > dexEntries = new ArrayList < ZipEntry > ( ) ; dexEntries . add ( apkFile . getEntry ( "classes.dex" ) ) ; for ( int i = 2 ; i < 99 ; ++ i ) { final ZipEntry e = apkFile . getEntry ( "classes" + i + ".dex" ) ; if ( e != null ) { dexEntries . add ( e ) ; } else { break ; } } final int n = dexEntries . size ( ) ; if ( n == 0 ) { Log . err ( "Source apk does not have any dex files" ) ; } this . translateInstructions = translateInstructions ; this . resolver = translateInstructions ? new InvocationResolver ( ) : null ; final Opcodes opcodes = Opcodes . forApi ( Settings . apiLevel ) ; try { dexFiles = new DexFile [ n ] ; for ( int i = 0 ; i < n ; ++ i ) { dexFiles [ i ] = DexBackedDexFile . fromInputStream ( opcodes , new BufferedInputStream ( apkFile . getInputStream ( dexEntries . get ( i ) ) ) ) ; } } catch ( IOException e ) { Log . err ( "failed to process the source apk file" ) ; Log . err ( e ) ; } }
create a loader that loads from an apk file ( could contain multiple dex files ) , optionally loading instructions
