与Android热更新方案Amigo的初次接触

在这里插入图片描述

修复前:点击文字没有跳转
修复后:点击文字可以跳转(增加了Activity和布局文件)
在这里插入图片描述
其实热更新最重要的是不需要重新安装apk,有的甚至不需要重启app,就可以更新代码或者资源文件。
我对比目前的几大主流的热更新方案,感觉Amigo是目前最适合我的。

在这里插入图片描述

上表来自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文件,所以保证了成功率。

扫描二维码关注公众号,回复: 5015967 查看本文章

免费获取安卓开发架构的资料(包括Fultter、高级UI、性能优化、架构师课程、 NDK、混合式开发(ReactNative+Weex)和一线互联网公司关于android面试的题目汇总可以加:936332305 / 链接:点击链接加入【安卓开发架构】:https://jq.qq.com/?_wv=1027&k=515xp64

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Coo123_/article/details/86576392