AndFix
AndFix copied to clipboard
apkpatch工具类diff 方法 新增类 执行不到的问题,见注释
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;
}