主要记下引入Amigo的过程。

修复前:点击文字没有跳转

修复后:点击文字可以跳转(增加了Activity和布局文件)

其实热更新最重要的是不需要重新安装apk,有的甚至不需要重启app,就可以更新代码或者资源文件。

我对比目前的几大主流的热更新方案,感觉Amigo是目前最适合我的。

对比项

Amigo

Tinker

nuwa/QZone

AndFix

Dexposed

类替换

yes

yes

yes

no

no

lib替换

yes

yes

no

no

no

资源替换

yes

yes

yes

no

no

全平台支持

yes

yes

yes

yes

no

即时生效

optional

no

no

yes

yes

性能损耗

较小

较大

较小

较小

补丁包大小

较大

较小

较大

一般

一般

开发透明

yes

yes

yes

no

no

复杂度

较低

较低

复杂

复杂

gradle支持

yes

yes

yes

no

no

接口文档

丰富

丰富

一般

一般

较少

占Rom体积

较大

较大

较小

较小

较小

成功率

100%

较好

很高

一般

一般

上表来自Amigo的Github主页,觉得100%的成功率起到了很好的宣传效果!

tinker的功能非常强大,基本除了AndroidManifest.xml文件和tinker本身少数几个类之外,其他内容都能替换,包括布局、资源。不足之处在于其首次配置稍有点复杂,上手难度较AndFix稍高一些。

AndFix不可以修复Application的onCreate(),而且现在已经升级为SopHix,SopHix需要使用阿里的平台,每月免费5万台。目测SopHix的功能很强大,但是要接入阿里……

Robust是美团的方案,但是由于进行了代码侵入,对运行效率、方法数、包体积都有影响,文件方法数变多,企业级应用可能会涉及到65535的问题。

Amigo是下载一个完整的APK(所以包有点大,当然也可以做差分包),支持增加Activity,支持修改资源文件。

重点是接入方便。

在 project 的 build.gradle中:

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.3.0'

......

classpath 'me.ele:amigo:0.6.8'

}

}

复制代码

对了,目前Amigo不支持gradle3.0,我用的是2.3.0。

在module的 build.gradle

apply plugin: 'me.ele.amigo'

android {

...

}

dependencies {

...

compile 'me.ele:amigo-lib:0.6.7'

}

//if you don't want use amigo in dev, set this value to true

//you can define this extension in your mybuild.gradle as to distinguish debug & release build

amigo {

disable false //default false

autoDisableInInstantRunMode true // default false

}

复制代码

调用更新(新的apk已经在本地)

var file = File(Environment.getExternalStorageDirectory().path + File.separator + "test.apk")

if(file.exists()){

Amigo.workLater(this, file) {

if(it){

toast("更新成功!")

val intent = packageManager.getLaunchIntentForPackage(packageName)

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

startActivity(intent)

android.os.Process.killProcess(android.os.Process.myPid())

}

}

}

复制代码

最后是重启App。

我调用Amigo.work(context, patchApkFile);方法app不会自动重启,需要手动点击图标启动。

在Amigo的插件中,替换原有 Application的,所以Amigo支持修改Application。

Amigo替换了整个dex文件,所以保证了成功率。

android 热更新 方案,与Android热更新方案Amigo的初次接触相关推荐

  1. android热更新插件,与Android热更新方案Amigo的再次接触

    Amigo 作为一个"过气"的的热修复框架,用来学习和了解一下热修复的基本原理还是很好的.本文是本系列的第三篇. 前两篇: 与Android 热更新方案Amigo的初次接触 原作者 ...

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

    出自:http://www.cnblogs.com/Creator/p/7007694.html 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙 ...

  3. Android热更新五:四大热修复方案对比分析

    很早之前就想深入的研究和学习一下热修复,由于时间的原因一直拖着,现在才执笔弄起来. Android而更新系列: Android热更新一:JAVA的类加载机制 Android热更新二:理解Java反射 ...

  4. Android热更新初探,Bugly热更新的集成和使用(让你的应用轻松具备热更新能力)

    介绍   在介绍Bugly之前,需要先向大家简单介绍下一些热更新的相关内容.当前市面的热补丁方案有很多,其中比较出名的有阿里的AndFix.美团的Robust以及QZone的超级补丁方案.但它们都存在 ...

  5. Android 版本更新(非热更新) 适配7.0更新 以及三星 note系列读取内存相关目录无权限问题

    目录 [TOC] 个人认为热更新虽然是好 但是 像ios直接拒绝使用热更新 也不无道理 本人一直使用传统的版本升级方式 请求接口 返回下载链接 然后下载文件 用Intent吊起安装 android7. ...

  6. 热修复系列之一----Android 热修复原理篇及几大方案比较

    热修复说白了就是"即时无感打补丁",比如你们公司上线一个app,用户反应有重大bug,需要紧急修复.2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也 ...

  7. 技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch

    简介: 关于 Android 热修复方案--DexPatch 的介绍与使用说明 方案介绍 为了解决 Native 模块上线后的问题,mPaaS 提供了热修复功能,实现不发布客户端 apk 场景下的热修 ...

  8. 【热搜词方案】android/java热搜词方案设计

    [热搜词方案]android/java热搜词方案设计 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 热搜词,即用户搜索频率很高的一些关键 ...

  9. 解决Android Studio等开发软件出现更新TKK失败的两种方案

    解决Android Studio等开发软件出现更新TKK失败的两种方案 方案一 配置hosts 1. 配置域名与IP 2.扫描国内可用的IP 方案二 替换翻译引擎 百度翻译引擎 在Android St ...

最新文章

  1. Python代码:数字图像处理(DIP)7.1.1图像金字塔example7.1
  2. 【定时任务】JDK java.util.Timer定时器的实现原理
  3. .NET Core开发日志——Runtime IDentifier
  4. dedian系统云服务器,云服务器选择Ubuntu还是Debian镜像系统?根据熟悉度选择
  5. a16z和斯坦福大学区块链研究中心将于5月4日举行NFT虚拟峰会
  6. Citrix XVA文件格式
  7. ios icon尺寸问题
  8. Marathon环境下fastdfs和vsftpd和miniIo文件服务器搭建的方式
  9. ssm中小型酒店客房预订系统计算机毕业设计
  10. install在python里什么意思_“pip install”和“python-m pip install”有什么区别?
  11. Linux文件压缩命令
  12. 【转】用深度学习揭示数据的因果关系
  13. 小型微型计算机投稿流程,小型微型计算机系统
  14. x-code中蓝色文件夹和绿色文件夹的区别
  15. 计算机软件服务票可以抵扣吗,航天的软件技术维护费是否可以全额抵扣?
  16. 如何防止滴滴出行后台自启
  17. 蒙特卡洛python求解派_Python实现蒙特卡罗方法
  18. 微信小游戏开发实战教程8-消除处理
  19. Apple Color Emoji打开
  20. mysql 主键列_MySQL列属性 之 主键

热门文章

  1. ACCESS实例2 资料管理1——表、表关系与查询
  2. 凌晨3点不回家:因为想不到的心酸!
  3. 这学期她选修了英语计算机和驾驶三门课程,选出最合适的翻译这个学期她选修了英语、计算机和驾驶三门课程...
  4. 百度网盘怎么批量改名(包含子文件夹)
  5. unity3d老电视花屏闪烁效果
  6. 路径算法:遗传算法 (Genetic Algorithm, GA)
  7. android手机是否root,已经2017年了,安卓手机还需要Root吗?
  8. leet code No1
  9. ESP32-S3无线WiFi芯片模组,赋能家居设备智能化生活应用
  10. 如何使用Transformers和Tokenizers从头开始训练新的语言模型