/derocoodemo

a demo depend rocoofix

Primary LanguageJavaApache License 2.0Apache-2.0

derocoodemo @Deprecated (see https://github.com/Tencent/tinker)


a demo depend rocoofix #基于https://github.com/dodola/RocooFix 静态修复部分的demo ###android gradle version! com.android.tools.build:gradle:2.1.2 ###android 6.0说明: 测试发现有2种情况补丁不生效
1:没有开启scanf
2:程序无法读取sdcard上的补丁,即使后面手动开启权限,也存在file.canread==false[原因未知]
demo修改:
1添加scanf
2界面显示应用的补丁目录(上面情况2下,走data/data)

###demo 涉及:
1抽象patch补丁包的路径(默认放在data/data/下,或者放在sdcard,可以自定义)
2抽象patch下载(简单实现了个默认的,可以根据需要修改成自己的下载逻辑)

##问题汇总(表格会遮挡,请拖动)

###编译不通过请加入--stacktrace 查看具体错误信息

问题 原因 建议
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 插桩没有成功 app反编译看看是否插桩成功,(之前用dex2jar出现看不到插庄,但实际已经插庄)这里推荐工具jadx-gui(从群友幽幽那里得知的工具,在此鸣谢)(derocoodemo/app/doc/QQ20160708-0.png是插庄成功的截图)
patch.jar生成不了 估计流程不对 参考(derocoodemo/app/doc/77d89a39e481ed8c0cd5f4c8a2cfbe86f5bdf8b9_1.jpg)
hash.txt为空 没有开启混淆 开启混淆
scanref打开后报错 找不到属性 插件版本太低 demo已经应用最新插件
mininum sdk小于15 sdk版本不一致 use overrideLibrary
Error:Execution failed for task app rocooJarBeforeDexDebug gradle 版本太低 com.android.tools.build:gradle:2.1.2
>com/android/dx/cf/direct/AttributeFactory gradle 版本太低 com.android.tools.build:gradle:2.1.2
rocoo稳定么 rocoo是基于扣扣空间的方案,稳不稳定看下面微信对qq空间方案的评价
Unsupported major.minor version 52.0 高版本的java project使用了低版本的来运行 使用高版本Jdk编译 .. 1.8

###注意
1任何在补丁加载前的类(比如Application及其子类)都不能插入Hack.class
2最新插件必须开混淆
3includePackge 包名是 /分割 不是 .分割
4excludeClass a.class,b.class 不带包名
5rocoo(lib库)是1.1,rocoofix(插件)是1.2.6 或者自己编译源代码 ###mark:
debug阶段建议设置成sdcard的,方便替换测试


需要增量补丁的可以使用bsdiff实现
https://github.com/shoyu666/bsdiffAndroidDemoWithSo

###热修复相关文章:


1 rocoo静态原理基于扣扣空间文章
https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=1&srcid=1106Imu9ZgwybID13e7y2nEi#wechat_redirect

###2微信的总结 http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=2649286306&idx=1&sn=d6b2865e033a99de60b2d4314c6e0a25&scene=23&srcid=0705vd1zLzQEHZ9G6JyQSqTG#rd

###补丁生成流程简介 图片名称 ###在线补丁流程思路 图片名称