AndFix icon indicating copy to clipboard operation
AndFix copied to clipboard

apkpatch.jar工具中,类DexDiffer可能有误

Open withparadox2 opened this issue 8 years ago • 5 comments

    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块里面。

withparadox2 avatar Apr 16 '16 02:04 withparadox2

跪求一份 apkpatch工具的源码

milk1990 avatar Jun 06 '16 12:06 milk1990

@milk1990 我只是把apktool.jar反编译了,并没有源码

withparadox2 avatar Jun 06 '16 13:06 withparadox2

问题不少,经常出现diff不出来的问题,没法用啊,啥时候更新

TracyZhangLei avatar Jun 14 '16 10:06 TracyZhangLei

恩,是有问题,这样对新增类的支持不好,不过也符合他们的“方法级”修复的初衷。

chikeong avatar Jul 25 '16 09:07 chikeong

我尝试小包apkpatch打补丁可以,大项目直接报错

kiedo avatar Dec 16 '16 03:12 kiedo