Amigo学习(一)解决使用中遇到的问题

2018-02-27 11:31:37来源:https://www.jianshu.com/p/989d7a193b3a作者:GoileoLee人点击

分享


写在开头

上一篇博文中对比了当下比较热门的热修复框架,并看到了Tinker 框架Demo 的展现过程。Tinker 的开源时间较晚,功能和文档更加完善。但不能对四大组件进行热更也是比较遗憾。不过我们发现另一个热修复开源框架Amigo,比起其他热修复框架,Amigo 可实现四大组件的添加。不过它也是有一些不足之处。


本文主要对 Amigo 的集成使用、实现过程和各模块大致功能做学习和简要总结。


优点:


支持四大组件热更;
集成简单,开发透明。

缺点:


整包替换,消耗较大;
使用及避坑

官方使用文档:https://github.com/eleme/Amigo
使用方法参见官方文档,写得非常详细。


笔者这里是直接下载工程到本地,导入到 Android Studio。
下载 --> 导入 --> 运行


这一小节将简述源码编译过程中遇到的问题和解决办法。


Q1. Connot resolve symbol 'Amigo'


Cannot resolve symbol 'Amigo'

不能解析符号'Amigo',看一下 app 的 build.gradle 文件。


dependencies {
compile project(":amigo-lib")
...

引用了的啊~ 奇怪了
排查......




fix amigo-lib not found

发现 github 上作者对这个问题进行过修复,不过我这里还是出现了。具体情况查了很久不知所以。
那就换个思路解决吧。
单独编译 Amigo-lib ,会生成 aar 包。
Terminal --> gradlew :amigo-lib:assembleDebug


dependencies {
// compile project(":amigo-lib")
compile (name:'amigo-lib-debug', ext:'aar')
...

将 aar 拷贝到 app moudle 的 libs 中,在 build.gradle 添加引用。再编译,就不会报错了。


不过,编译没问题了,一运行 APP 就崩溃。


Q2. testCoverageEnable


NoClassDefFoundError

NoClassDefFoundError,这应该是没找到这个类的定义而报错,那这个 Lorg/jacoco... 是个啥?




jacoco

Java代码覆盖率库 —— 用来测试代码覆盖情况。
看一下 amigo-lib 的 build.gradle 文件,在 debug 才会启用。而我们编译就是用的 assembleDebug.


buildTypes {
debug {
debuggable true
// testCoverageEnabled = true
}
}

既然它与热修复无关,这里不深究,屏蔽它就好了。


Q3. Host/A.java


cannot resolve symbol 'A'

这个个问题就触及到我的知识盲区了,如果有大佬知道原因的,烦请告知。




host/A.java

main 中的类 DevActivity.java 引用 host 中的类 A.java 编译报错。


解决方案:从 host 中复制一份到 main 中...


Q4. assemblePatch

成功运行安装后,这是主包。还需要生成补丁包,使用 assemblePatch。


task preparePatch(dependsOn: "assemblePatch") << {
deletePatchApk()
runCmd("adb push ${getPatchApk()} /sdcard/${getPatchApkName()}")
}

这里会将 patchApk 用 adb 通过数据线发送到手机存储空间中。不过笔者的 adb 工具没有成功,需手动拷贝到手机存储中。
再次启动运行即可~


写在后头

Amigo 在 Github 上的人气看起来不如其他热更框架,不过笔者认为 Amigo 应该在站在巨人的肩膀上,集成了其他框架的一些优点,补充了不足。


在国内全民热更的大环境下,Amigo 的作者对其也是报有很大的希望,在 wiki 中如是说:



HotFix只是作为Amigo feature的一小块,其实Amigo真正要解决的是Android APP动态更新的问题。



不过要想成为商业级的框架,还需要一些努力吧。


推荐阅读:Android 热修复 - 各框架原理学习及对比
Amigo 学习(二)类和资源是怎么热更的?



记录在此,仅为学习!
感谢您的阅读!欢迎指正!
欢迎加入 Android 技术交流群,群号:155495090









最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台