Skip to content

Commit abb9ac3

Browse files
author
关杰
committed
Merge branch 'dev'
2 parents 68b7317 + 057f44a commit abb9ac3

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

atlas-core/src/main/java/android/taobao/atlas/startup/patch/KernalBundle.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)