APP項目如何與插件化無縫結合(三)
上面一篇主要介紹了Small的原理,相信大家應該現在心里有個大概的了解。好,我們接下來繼續開始!
一、Small的使用
關于Small的使用,Small的使用 這里講的很詳細,關于這里提下我當時遇到的問題和解決辦法。
1.Small作者應該用的是mac,推薦的是使用android studio的工程模板,上面的命令好像是不適應,至少對于我(使用windows),你得自己手動創建工程模板,就是把作者的那個模板復制到studio的工程模板配置下面,然后重啟打開就可以看到。可以先谷歌下,不行的話,可以發消息和我說下。我幫忙看看。
2.如果選擇自己手動創建項目的話,得留意第四步Configure UI route中,右鍵assets目錄->New->File,新建bundle.json文件。對于Android Studio這樣創建不會去解析assets目錄的。應該在app模塊下面的main目錄,右鍵->New->Folder->Assets Folder,新建assets目錄。就是把assets目錄換個位置。還有就是自己弄的時候,有問題可以多看看里面的issue和FAQ很多問題,一般已經有人幫你踩了。
3.Small項目需要編譯的時候需要使用build lib, build bundle命令,我現在還不清楚為什么我使用命令不行,可能因為那個命令是針對mac。后面也不去深究了。直接在Gradle任務導航里運行,效果一樣。
二、Small的升級和更新
這個是大家很關心的一個地方,Small的Demo里面有個功能測試升級,代碼的位置如圖所示,里面有個checkUpgrade()方法。
如果你直接使用demo的話,會看不出升級的效果的,因為uir是small作者自己的,基本都沒有更新。后面將介紹如何升級更新!
1.更換成你自己服務器的地址,如下圖所示,注釋的是demo的url,下面的url是我自己的。你需要在bundles.json里面配置你要更新的插件pgk名字和下載的地址。下圖是我自己的。
2.build lib,build bundle之后編譯程序,在手機上運行一個。然后比如我的main插件有問題,我要更改。把代碼更改好之后。一定要記得更改版本號。demo里面默認的是1。需要我們再app.main下面的build.gradle把versionCode由1更換成2,name由1.0換成1.1。
然后再build lib,build bundle之后,你會看到宿主app的smallLibs下面的armeabi有很多so文件,就是我們加載的。選擇main.so文件放到你的服務器上面。在上面的那個demo里面點擊Check upgrade按鈕,等待更新完成。然后退出后臺,重啟。你會發現插件更新成功了!!!
三、看看更新的代碼
主要調用checkUpgrade方法,我們看看requestUpgradeInfo
里面主要是通過http請求獲取服務器bundles.json這個文件,然后去解析json.把信息存儲到UpgradeInfo里面。mResponseHandler完成回調。
然后就是調用upgradeBundles方法。我們跟進去看看,這個方法具體做什么。
這個方法主要是校驗服務器上bundles.json的信息,然后開始下載插件和加載插件。現在插件已經下載到你的應用儲存目錄了!!
四、Small的加載
原諒下好久沒有使用UML畫圖工具了,很多概念都忘了,畫了一個大概的流程圖,方便直觀的看。
五、Small的啟動
代碼我就不深入說了,感興趣的同學,可以按照這個圖一步步看看源碼,Small作者寫的挺不錯的,很多地方值得學習和借鑒
六、插件化的問題
插件化的實施一定不是一個人的事情,這是一個團隊的事情,很多東西都必須考慮好。這是查閱資料總結的幾個問題。后面再繼續講解初步的方案。
系列文章
APP項目如何與插件化無縫結合(一)
APP項目如何與插件化無縫結合(二)
APP項目如何與插件化無縫結合(三)
參考資料:
1.https://github.com/wequick/Small
2.http://www.tuicool.com/articles/NB32EjY
3.http://www.tuicool.com/articles/RR3QrmV
來自:http://www.jianshu.com/p/264b283a425a