Amigo學習(一)解決使用中遇到的問題

寫在開頭

上一篇博文中對比了當下比較熱門的熱修復框架,並看到了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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章