andfix

es安装过程中常见的报错及解决方法

ε祈祈猫儿з 提交于 2020-08-19 03:04:28
1、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 解决方法: 切换到root用户,编辑sysctl.conf配置文件 vi /etc/sysctl.conf 添加如下内容 vm.max_map_count = 655360 运行命令,生效参数 sysctl -p 2、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] 解决方法: 切换root用户,编辑limits.conf配置文件 vi /etc/security/limits.conf 添加如下内容 * soft nofile 65536 * hard nofile 131072 * soft memlock 2048 * hard memlock 2048 注: soft nproc:单个用户可用的最大进程数量(超过会警告) hard nproc:单个用户可用的最大进程数量(超过会报错) soft nofile:可打开的文件描述符的最大数(超过会警告) hard nofile:可打开的文件描述符的最大数(超过会报错) 3、max number of

Android热修复原理

故事扮演 提交于 2020-07-27 13:04:44
AndFix:阿里 Tinker:微信 Qzone:QQ空间 Robust:美团 一、AndFix 采用的是 底层替换方案,类似反射 不同: AndFix 采用的是替换ArtMethod结构体中的字段 所有信息,包括执行入口、访问权限、所属类和代码执行地址等等 ,这样会有兼容问题,因为厂商可能会修改ArtMethod结构体,导致方法替换失败。AndFix采用native。 阿里的Sophix 采用的是替换整个ArtMethod结构体,这样不会存在兼容问题。 缺点: 由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况 (只能修改值) 使用:在Application.onCreate() 中添加以下代码 二、Qzone(Dex插桩)、Tinker:类替换 类的加载机制: 类的加载ClassLoader(KitKat - 4.4.4_r1): parent为BootClassLoader,双亲(我理解为2个亲戚)委托机制,父加载器不是父类 Qzone和Tinker的热修复方案: 第二个参数是dex文件的保存目录 自定义Tinker实现的适配: v14、V19、V23的区别是Android api参数个数这些修改后反射要做适配 Android N以上Tinker要做适配,官方有发布文档

移动端APP热更新方案(iOS+Android)

我与影子孤独终老i 提交于 2020-03-30 07:17:53
出自:http://www.cnblogs.com/Creator/p/7007694.html 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。 重点是还会有原来的版本遗留,无论你怎么提示都有人放弃治疗,不愿意升级,强制不能使用体验又足够糟糕到让人不能启齿。 如果这是一个影响公司收入或者体验影响极其不好的Bug,那完蛋了,可能公司老板会对整个技术团队的技术能力丧失信心,其对技术人员的伤害是致命的。 最后最致命的是: 有时候仅仅是因为不小心写错了一行代码,就让所有的加班都付之东流,苦不苦,冤不冤,想想都苦。 还有一种剧情是研发总监把锅甩给测试团队,测试不过关,测试摊摊手说我也不是神啊,总会有漏网之鱼. 那能不能神不知鬼不觉再没有产生较大影响前把bug快速修复了呢? 热更新的行业情况 先来说说Android 并不是因为Android更有料就先说他,而是它的用户量级比Iphone大,我们写文章也是讲究大数据分析的不是.. Andoid端在15年热补丁就比较火,先后出现了Dexposed、AndFix,Qzone超级补丁的类Nuwa方式,微信的Tinker, 大众点评的nuwa、百度金融的rocooFix,

Android热修复实践应用--AndFix

社会主义新天地 提交于 2020-02-29 08:50:43
一直关注App的热修复的技术发展,之前做的应用也没用使用到什么热修复开源框架。在App的热修复框架没有流行之前,做的应用上线后发现一个小小的Bug,就要马上发一个新的版本。我亲身经历过一周发两个版本,真的折腾用户的节奏~~所以,要开始考虑引入热修复。下面记录使用开源框架阿里巴巴的AndFix过程。 实现的原理 这里说的不是热修复怎么实现修bug的原理,这里说的是怎么使用AndFix。如果你想了解更多的andFix实现原理,你可以参考下面的文章: https://github.com/alibaba/AndFix (AndFix的官网) http://blog.csdn.net/lmj623565791/article/details/49883661 (Android大神鸿洋的Bolg文章) 应用启动的时候,在 onCreate() 方法中获取友盟的在线参数来判断当前的应用版本是否有补丁需要下载,有则通过ThinDonloadManager来下载到SD下并且通过使用AndFix来加载到应用中。 使用极光推送消息到该应用的版本需要下载补丁,如果应用收到了消息后,应用判断当前的版本是否需要下载补丁。如果应用没有收到消息的通知,则下次启动App的时候,获取友盟在线参数来判断是否需要下载补丁。 步骤 在gradle文件中增加相应的依赖

Android热修复原理

女生的网名这么多〃 提交于 2019-12-06 18:37:15
一. AndFix AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。 注:在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的。 AndFix采用native hook的方式,这套方案直接使用dalvik_replaceMethod替换class中方法的实现。由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况(通过替换init与clinit只可以修改field的数值)。Andfix可以支持的补丁场景相对有限,仅仅可以使用它来修复特定问题。 二. QZone(插桩方式) 该方案基于的是android dex分包方案的, 简单的概括一下,就是把多个dex文件塞入到app的classloader之中,但是android dex拆包方案中的类是没有重复的,如果classes.dex和classes1.dex中有重复的类,当用到这个重复的类的时候,系统会选择哪个类进行加载呢? 让我们来看看类加载的代码: 一个ClassLoader可以包含多个dex文件,每个dex文件是一个Element,多个dex文件排列成一个有序的数组dexElements,当找类的时候,会按顺序遍历dex文件,然后从当前遍历的dex文件中找类,如果找类则返回

走进热修复框架AndFix的世界

a 夏天 提交于 2019-12-06 18:33:32
关于阿里的开源热修复框架AndFix引起了广泛共鸣,受到了很多人的青睐。那今天就跟随我的步伐来详细了解一下AndFix的详细信息和使用方法。 1.什么是AndFix? AndFix是阿里巴巴出的一个专门针对Android的热修复框架 ,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的。 看看阿里巴巴官方对AndFix的描述: 英文好的可以看官网说明文档(有翻译不妥欢迎指出) 1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app的一种解决方案。 2.AndFix是Android hot-fix 的缩写 3.AndFix 支持Android的2.3-7.0的版本,支持ARM和X86的处理器,支持Dalvik与ART的运行时,支持32位和64位。 4.AndFix的补丁文件的格式是.apatch ,它是由您自己的服务器分发到客户端解决您的应用程序的错误。 2.AndFix的原理 AndFix的实现原理是方法体的替换 3.修复过程 4.获取AndFix库 直接将AndFix AAR添加到您的项目作为编译库。 对于Maven的依赖: <dependency> <groupId>com.alipay.euler</groupId> <artifactId>andfix</artifactId> <version>0.5.0</version>

探索安卓热修复框架AndFix的奥秘

匆匆过客 提交于 2019-12-06 18:33:26
虽然阿里的AndFix框架已经出来很长时间了,但是还不了解它的同学依然挺多,接下来就跟着我一起来到AndFix的世界里一起看看,如何达到不用重新安装app就可以修复bug。 1.什么是AndFix? AndFix是阿里巴巴出的一个专门针对Android的热修复框架 ,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的。 看看阿里巴巴官方对AndFix的描述: 英文好的可以看官网说明文档(有翻译不妥欢迎指出) 1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app的一种解决方案。 2.AndFix是Android hot-fix 的缩写 3.AndFix 支持Android的2.3-7.0的版本,支持ARM和X86的处理器,支持Dalvik与ART的运行时,支持32位和64位。 4.AndFix的补丁文件的格式是.apatch ,它是由您自己的服务器分发到客户端解决您的应用程序的错误。 2.AndFix的原理 AndFix的实现原理是方法体的替换 3.修复过程 4.获取AndFix库 直接将AndFix AAR添加到您的项目作为编译库。 对于Maven的依赖: <dependency> <groupId>com.alipay.euler</groupId> <artifactId>andfix</artifactId> <version>0

十分钟教会你使用安卓热修复框架AndFix

核能气质少年 提交于 2019-12-06 18:33:22
腾讯最近开发出一个Tinker,阿里也有一个Dexposed框架,当然还有一个就是今天的主角热修复框架AndFix。接下来,我会从它的概念、原理、使用方法等为你详细介绍。 1.什么是AndFix? AndFix是阿里巴巴出的一个专门针对Android的热修复框架 ,那什么是热修复呢?就是不需要重新安装APK而达到修复bugs的目的。 看看阿里巴巴官方对AndFix的描述: 英文好的可以看官网说明文档(有翻译不妥欢迎指出) 1.AndFix是一个Android库,它是在线解决bugs,而不是重新安装app的一种解决方案。 2.AndFix是Android hot-fix 的缩写 3.AndFix 支持Android的2.3-7.0的版本,支持ARM和X86的处理器,支持Dalvik与ART的运行时,支持32位和64位。 4.AndFix的补丁文件的格式是.apatch ,它是由您自己的服务器分发到客户端解决您的应用程序的错误。 2.AndFix的原理 AndFix的实现原理是方法体的替换 3.修复过程 4.获取AndFix库 直接将AndFix AAR添加到您的项目作为编译库。 对于Maven的依赖: <dependency> <groupId>com.alipay.euler</groupId> <artifactId>andfix</artifactId> <version>0

关于Android热更新琐碎记录

自作多情 提交于 2019-12-03 22:15:48
最近比较闲,就接手了一个比较烫手的山芋,热更新,这个被抄烂的词。 下面是这段事件我在做技术调研的时候收集的方案,和最终选型的记录。 1 ):Andfix(alipay开源出来的一个android热修补方案) https://github.com/alibaba/AndFix 缺点: 1 不支持yunos 2 不支持新增class,不能修改文件,不能替换资源。 3 我实验了几把也都没有成功。。。 2 ):Amigo(饿了么方案) https://github.com/eleme/Amigo/blob/master/README_zh.md#amigo 这个方案没有做深入的研究,实际使用人数不多。 ps:其实饿了么的这个方案我这里虽然没有做深入的研究,但是看作者写的文档和代码可以看出来,如果是打算自行搭建后端服务来实现的话,我倒是比较推荐该方案。 3):Tinker(微信) https://github.com/Tencent/tinker 缺点: 1 需要修改application,Tinker的实现方案需要完全隐藏原有的application。修改代码比较多 2 gradle配置文件比较复杂 优点: 1 so xml等资源文件都支持 2 差分文件也比较小 如何集成tinker写了个demo 见: https://github.com/hehr/TinkerDemo 总结一下: 1

Android热修复原理

匿名 (未验证) 提交于 2019-12-02 23:32:01
һ. AndFix AndFix的原理就是方法的替换,把有bug的方法替换成补丁文件中的方法。 注:在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的。 AndFix采用native hook的方式,这套方案直接使用dalvik_replaceMethod替换class中方法的实现。由于它并没有整体替换class, 而field在class中的相对地址在class加载时已确定,所以AndFix无法支持新增或者删除filed的情况(通过替换init与clinit只可以修改field的数值)。Andfix可以支持的补丁场景相对有限,仅仅可以使用它来修复特定问题。 二. QZone(插桩方式) 一个ClassLoader可以包含多个dex文件,每个dex文件是一个Element,多个dex文件排列成一个有序的数组dexElements,当找类的时候,会按顺序遍历dex文件,然后从当前遍历的dex文件中找类,如果找类则返回,如果找不到从下一个dex文件继续查找。 理论上,如果在不同的dex中有相同的类存在,那么会优先选择排在前面的dex文件的类,如下图: 在此基础上,我们构想了热补丁的方案,把有问题的类打包到一个dex(patch.dex)中去,然后把这个dex插入到Elements的最前面,如下图: 三. 微信Tinker(差量包) Instant