• Android AndFix修复方式的限制


    这里阅览了很多网上关于修复的资料,一一贴在这里便于查看:

    https://github.com/alibaba/AndFix  这是官方处  要了解使用,一定得看看这里。

    http://www.jianshu.com/p/479b8c7ec3e3 如果你看不懂官方的,就看看这里。

    http://blog.csdn.net/lpftobetheone/article/details/50435371  适合初步了解使用,一个简单的Demo(这篇文章里面有对补丁只能加载一次问题的解决)

    http://www.cnblogs.com/common1140/p/5287040.html  这一篇更贴近于我们的实际开发,如何使用修复- 产生 - 上传补丁 -下载补丁

    https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731290eef12ad0d17f39d4a&scene=1&srcid=1106Imu9ZgwybID13e7y2nEi#wechat_redirect 这里是寻找原理的地方

    下面说一下修复的几种方式:

    AndFix修复:

    ① 不支持YunOS
    ② 无法添加新类和新的字段
    ③ 需要使用加固前的apk制作补丁,但是补丁文件很容易被反编译,也就是修改过的类源码容易泄露。
    ④ 使用加固平台可能会使热补丁功能失效(看到有人在360加固提了这个问题,自己还未验证)。

    ⑤ andfix不支持布局资源等的修改

    ⑥ 官网:AndFix supports Android version from 2.3 to 7.0, both ARM and X86 architecture, both Dalvik and ART runtime, both 32bit and 64bit.

    ⑦ 应用patch不需要重启。但由于从实现上直接跳过了类初始化,设置为初始化完毕,所以像是静态函数、静态成员、构造函数都会出现问题,复杂点的类Class.forname很可能直接就会挂掉。

    ⑧ AndFix的一个潜在问题:

        加载一次补丁后,out.apatch文件会copy到getFilesDir目录下的/apatch文件夹中,在下次补丁更新时,会检测补丁是否已经添加在apatch文件夹下,已存在就不会复制加载sdcard的out.apatch。

    源码:

    public void addPatch(String path) throws IOException { File src = new File(path);
        File dest = new File(mPatchDir, src.getName());
        if(!src.exists()){ 
        throw new FileNotFoundException(path); }
      
    if (dest.exists()) {
         Log.d(TAG, "patch [" + path + "] has be loaded."); return; }
       FileUtil.copyFile(src, dest);
    // copy to patch's directory Patch patch = addPatch(dest); if (patch != null) {
        loadPatch(patch); }
    }
  • 相关阅读:
    【cocos2d-js网络教程篇】cocos2d-js http网络请求
    COCOS2D
    Laravel5中的Session
    Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库
    cocos-js Http方式网络请求
    Python语法31[module/package+import]
    cocos2d-js callFunc传参
    安装pygame for Python3.5
    阿里云vsftp安装和简单的配置
    Git代码行统计命令集
  • 原文地址:https://www.cnblogs.com/aimqqroad-13/p/5965683.html
Copyright © 2020-2023  润新知