Open zyl409214686 opened 7 years ago
com.euler.patch.diff 包下DexDiffer类。
public DiffInfo diff(File newFile, File oldFile) throws IOException { DexBackedDexFile newDexFile = DexFileFactory.loadDexFile(newFile, 19, true); DexBackedDexFile oldDexFile = DexFileFactory.loadDexFile(oldFile, 19, true); DiffInfo info = DiffInfo.getInstance(); //此行代码是否应该放入第一个for循环中,每次遍历都重置一下状态 boolean contains = false; for (DexBackedClassDef newClazz : newDexFile.getClasses()) { Set oldclasses = oldDexFile .getClasses(); for (DexBackedClassDef oldClazz : oldclasses) { if (newClazz.equals(oldClazz)) { compareField(newClazz, oldClazz, info); compareMethod(newClazz, oldClazz, info); contains = true; break; } } //1、场景是现在类有修改、并且有新增类 if (contains) continue; //即使有新增类这里也不会被执行到。 info.addAddedClasses(newClazz); } return info; }
com.euler.patch.diff 包下DexDiffer类。