如题
vshtjzan1#
有具体点的信息吗
btxsgosb2#
对同一个项目进行修改不同类的不同方法(就是简单的toast内容修改),生成文件origin.apk bug1.apk bug2.apk,使用apkpatch 命令生成bug1.apatch bug2.apatch,然后使用apkpatch -m bug1.apatch bug2.apatch -o total -k -p -a -e 命令生成/total/xxx.apatch文件,从大小来看确实是合并了,导入sdcard后,load补丁,发现只有第二次修改的bug2产生效果,bug1依然没变。
上面是我的操作过程,如果有哪里不对劳烦指出,如果需要详细的代码我稍后可以打包附件。
Thanks。
c2e8gylq3#
好的,可以逆向下patch包看看
dnph8jn44#
你好,请问生成的patch文件是什么格式,使用什么工具逆向查看呀?
6tr1vspr5#
哦,您上面说的是反编译patch后的dex文件吗?
bq3bfh9z6#
我修改了两次,第一次修改了MainActivity的onclick事件,第二次修改了SecondActivity的onclick事件,分别生成两次bug1.apatch bug2.apatch,merge为merge.apatch文件,反编译对应的dex文件,发现两次修改的文件都存在,但是发现一个不同的地方不知道是不是问题所在。
被替换的方法都会有一个MethodReplace 的 Annoatation,单独修改生成的smali代码样式如下
.annotation runtime Lcom/alipay/euler/andfix/annotation/MethodReplace;clazz = "com.euler.andfix.SecondActivity$1"method = "onClick".end annotation
merge后同一个位置的Annonatation变成了如下样式:
.annotation build Iclazz = "com.euler.andfix.MainActivity$1"method = "onClick".end annotation
麻烦看下是不是这个问题,如何修改?尝试了下,和-m 后面patch顺序无关,应该跟patch生成时间有关系吧
pdtvr36n7#
E:\AndFix\apkpatch-1.0.3>apkpatch -m E:\AndFix\apkpatch-1.0.3\1.apatch E:\AndFix\apkpatch-1.0.3\2.apatch -o E:\AndFix\apkpatch-1.0.3 -k bugfit.jks -p 123456789total -a bugfit.jks -e 123456789我是这样来合并补丁的,但是只显示了2.apatch 的效果呀,1.apatch没有效果。。
7条答案
按热度按时间vshtjzan1#
有具体点的信息吗
btxsgosb2#
对同一个项目进行修改不同类的不同方法(就是简单的toast内容修改),生成文件origin.apk bug1.apk bug2.apk,使用apkpatch 命令生成bug1.apatch bug2.apatch,然后使用apkpatch -m bug1.apatch bug2.apatch -o total -k -p -a -e 命令生成/total/xxx.apatch文件,从大小来看确实是合并了,导入sdcard后,load补丁,发现只有第二次修改的bug2产生效果,bug1依然没变。
上面是我的操作过程,如果有哪里不对劳烦指出,如果需要详细的代码我稍后可以打包附件。
Thanks。
c2e8gylq3#
好的,可以逆向下patch包看看
dnph8jn44#
你好,请问生成的patch文件是什么格式,使用什么工具逆向查看呀?
6tr1vspr5#
哦,您上面说的是反编译patch后的dex文件吗?
bq3bfh9z6#
我修改了两次,第一次修改了MainActivity的onclick事件,第二次修改了SecondActivity的onclick事件,分别生成两次bug1.apatch bug2.apatch,merge为merge.apatch文件,反编译对应的dex文件,发现两次修改的文件都存在,但是发现一个不同的地方不知道是不是问题所在。
被替换的方法都会有一个MethodReplace 的 Annoatation,单独修改生成的smali代码样式如下
.annotation runtime Lcom/alipay/euler/andfix/annotation/MethodReplace;
clazz = "com.euler.andfix.SecondActivity$1"
method = "onClick"
.end annotation
merge后同一个位置的Annonatation变成了如下样式:
.annotation build I
clazz = "com.euler.andfix.MainActivity$1"
method = "onClick"
.end annotation
麻烦看下是不是这个问题,如何修改?
尝试了下,和-m 后面patch顺序无关,应该跟patch生成时间有关系吧
pdtvr36n7#
E:\AndFix\apkpatch-1.0.3>apkpatch -m E:\AndFix\apkpatch-1.0.3\1.apatch E:\AndFix
\apkpatch-1.0.3\2.apatch -o E:\AndFix\apkpatch-1.0.3 -k bugfit.jks -p 123456789
total -a bugfit.jks -e 123456789
我是这样来合并补丁的,但是只显示了2.apatch 的效果呀,1.apatch没有效果。。