question: public static void copyJarsFromAssets ( final Context cxt , final String [ ] names ) { if ( debug ) { Log . d ( TAG , "copyJarsFromAssets(" + Arrays . deepToString ( names ) + ")" ) ; } final File dexDir = cxt . getDir ( DIR_SUBDEX , Context . MODE_PRIVATE ) ; File apkFile = new File ( cxt . getApplicationInfo ( ) . sourceDir ) ; final boolean shouldInit = shouldDexOpt ( apkFile , dexDir , names ) ; if ( shouldInit ) { try { copyToInternal ( cxt , dexDir , names ) ; appendOdexesToClassPath ( cxt , dexDir , names ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; throw new RuntimeException ( e ) ; } } else { if ( ! inAppended ( names ) ) { appendOdexesToClassPath ( cxt , dexDir , names ) ; } } }
target:  MUST be called on non-Main Thread