private static boolean appendOdexesToClassPath(Context cxt,File dexDir,String[] names){
  String strDexDir=dexDir.getAbsolutePath();
  ArrayList<String> jarPaths=new ArrayList<String>();
  for (int i=0; i < names.length; i++) {
    String jarPath=strDexDir + '/' + names[i];
    File f=new File(jarPath);
    if (f.isFile()) {
      jarPaths.add(jarPath);
    }
  }
  String[] jarsOfDex=new String[jarPaths.size()];
  jarPaths.toArray(jarsOfDex);
  PathClassLoader pcl=(PathClassLoader)cxt.getClassLoader();
  try {
    if (Build.VERSION.SDK_INT < SDK_INT_ICS) {
      FrameworkHack.appendDexListImplUnderICS(jarsOfDex,pcl,dexDir);
    }
 else {
      boolean kitkatPlus=Build.VERSION.SDK_INT >= SDK_INT_KITKAT;
      boolean marshmallowPlus=Build.VERSION.SDK_INT >= SDK_INT_MARSHMALLOW;
      ArrayList<File> jarFiles=DexDex.strings2Files(jarsOfDex);
      FrameworkHack.appendDexListImplICS(jarFiles,pcl,dexDir,kitkatPlus,marshmallowPlus);
    }
    for (    String jarName : names) {
      theAppended.add(jarName);
    }
    if (debug) {
      Log.d(TAG,"appendOdexesToClassPath completed : " + pcl);
      Log.d(TAG,"theAppended : " + theAppended);
    }
  }
 catch (  Exception ex) {
    throw new RuntimeException(ex);
  }
  return true;
}

private static boolean appendOdexesToClassPath ( Context cxt , File dexDir , String [ ] names ) { String strDexDir = dexDir . getAbsolutePath ( ) ; ArrayList < String > jarPaths = new ArrayList < String > ( ) ; for ( int i = 0 ; i < names . length ; i ++ ) { String jarPath = strDexDir + '/' + names [ i ] ; File f = new File ( jarPath ) ; if ( f . isFile ( ) ) { jarPaths . add ( jarPath ) ; } } String [ ] jarsOfDex = new String [ jarPaths . size ( ) ] ; jarPaths . toArray ( jarsOfDex ) ; PathClassLoader pcl = ( PathClassLoader ) cxt . getClassLoader ( ) ; try { if ( Build . VERSION . SDK_INT < SDK_INT_ICS ) { FrameworkHack . appendDexListImplUnderICS ( jarsOfDex , pcl , dexDir ) ; } else { boolean kitkatPlus = Build . VERSION . SDK_INT >= SDK_INT_KITKAT ; boolean marshmallowPlus = Build . VERSION . SDK_INT >= SDK_INT_MARSHMALLOW ; ArrayList < File > jarFiles = DexDex . strings2Files ( jarsOfDex ) ; FrameworkHack . appendDexListImplICS ( jarFiles , pcl , dexDir , kitkatPlus , marshmallowPlus ) ; } for ( String jarName : names ) { theAppended . add ( jarName ) ; } if ( debug ) { Log . d ( TAG , "appendOdexesToClassPath completed : " + pcl ) ; Log . d ( TAG , "theAppended : " + theAppended ) ; } } catch ( Exception ex ) { throw new RuntimeException ( ex ) ; } return true ; }
append dexoptimized dex files to the classpath .
