@@ -553,7 +553,7 @@ private static void expandFieldList(Object instance, String fieldName,
553553 }
554554
555555 private static boolean replaceElement (Object instance ,String fieldName ,Object replaceElement ) throws NoSuchFieldException ,IllegalArgumentException ,
556- IllegalAccessException {
556+ IllegalAccessException {
557557 boolean replaceSuccess = false ;
558558 Field jlrField = findField (instance , fieldName );
559559 Object [] original = (Object []) jlrField .get (instance );
@@ -662,23 +662,31 @@ private void quietClose(Closeable closeable){
662662 static Class [] constructorArgs2 = {File .class , File .class , DexFile .class };
663663 static Class [] constructorArgs1 = {File .class , boolean .class , File .class , DexFile .class };
664664
665+ static Class [] constructorArgsO = {DexFile .class ,File .class };
666+
667+
665668 public static Object [] makeDexElement (File file ,DexFile [] dex ) throws Exception {
666669 Object []objects = new Object [dex .length ];
667670 for (int i = 0 ; i < dex .length ; i ++) {
668671 try {
669672 Class Element = Class .forName ("dalvik.system.DexPathList$Element" );
670- Constructor cons = getElementConstructor ( Element , constructorArgs1 );
671- File apkFile = new File ( KernalConstants . baseContext . getApplicationInfo (). sourceDir );
672- if ( cons != null ) {
673- objects [ i ] = cons . newInstance ( apkFile , false , apkFile , dex [ i ]);
674- } else {
675- cons = getElementConstructor (Element , constructorArgs2 );
673+ if ( Build . VERSION . SDK_INT > 25 || Build . VERSION . SDK_INT == 25 && Build . VERSION . PREVIEW_SDK_INT > 0 ){
674+ Constructor cons = getElementConstructor ( Element , constructorArgsO );
675+ objects [ i ] = cons . newInstance ( dex [ i ], file );
676+ } else {
677+ File apkFile = new File ( KernalConstants . baseContext . getApplicationInfo (). sourceDir );
678+ Constructor cons = getElementConstructor (Element , constructorArgs1 );
676679 if (cons != null ) {
677- objects [i ] = cons .newInstance (apkFile , apkFile , dex [i ]);
680+ objects [i ] = cons .newInstance (apkFile , false , apkFile , dex [i ]);
678681 } else {
679- cons = getElementConstructor (Element , constructorArgs3 );
682+ cons = getElementConstructor (Element , constructorArgs2 );
680683 if (cons != null ) {
681- objects [i ] = cons .newInstance (apkFile , null , dex [i ]);
684+ objects [i ] = cons .newInstance (apkFile , apkFile , dex [i ]);
685+ } else {
686+ cons = getElementConstructor (Element , constructorArgs3 );
687+ if (cons != null ) {
688+ objects [i ] = cons .newInstance (apkFile , null , dex [i ]);
689+ }
682690 }
683691 }
684692 }
0 commit comments