AndFix
AndFix copied to clipboard
apkpatch.jar工具中,类DexDiffer可能有误
public DiffInfo diff(File newFile, File oldFile) throws IOException {
...
boolean contains = false;
for (DexBackedClassDef newClazz : newDexFile.getClasses()) {
for (DexBackedClassDef oldClazz : oldDexFile.getClasses()) {
if (newClazz.equals(oldClazz)) {
compareField(newClazz, oldClazz, info);
compareMethod(newClazz, oldClazz, info);
contains = true;
break;
}
}
if (!contains) {
info.addAddedClasses(newClazz);
}
}
return info;
}
如果contains第一次变为true,info.addAddedClasses(newClazz);
就再也得不到执行。应该将boolean contains = false;
移动到第一个for块里面。
跪求一份 apkpatch工具的源码
@milk1990 我只是把apktool.jar反编译了,并没有源码
问题不少,经常出现diff不出来的问题,没法用啊,啥时候更新
恩,是有问题,这样对新增类的支持不好,不过也符合他们的“方法级”修复的初衷。
我尝试小包apkpatch打补丁可以,大项目直接报错