AndFix icon indicating copy to clipboard operation
AndFix copied to clipboard

apkpatch工具类diff 方法 新增类 执行不到的问题,见注释

Open zyl409214686 opened this issue 7 years ago • 0 comments

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;
  }

zyl409214686 avatar May 17 '17 09:05 zyl409214686