APP項目如何與插件化無縫結合(三)

gtao1738 8年前發布 | 28K 次閱讀 Android Small Android開發 移動開發

上面一篇主要介紹了Small的原理,相信大家應該現在心里有個大概的了解。好,我們接下來繼續開始!

APP項目如何與插件化無縫結合(三)

一、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任務導航里運行,效果一樣。

APP項目如何與插件化無縫結合(三)

二、Small的升級和更新

這個是大家很關心的一個地方,Small的Demo里面有個功能測試升級,代碼的位置如圖所示,里面有個checkUpgrade()方法。

APP項目如何與插件化無縫結合(三)

APP項目如何與插件化無縫結合(三)

 

如果你直接使用demo的話,會看不出升級的效果的,因為uir是small作者自己的,基本都沒有更新。后面將介紹如何升級更新!

1.更換成你自己服務器的地址,如下圖所示,注釋的是demo的url,下面的url是我自己的。你需要在bundles.json里面配置你要更新的插件pgk名字和下載的地址。下圖是我自己的。

APP項目如何與插件化無縫結合(三)

APP項目如何與插件化無縫結合(三)

2.build lib,build bundle之后編譯程序,在手機上運行一個。然后比如我的main插件有問題,我要更改。把代碼更改好之后。一定要記得更改版本號。demo里面默認的是1。需要我們再app.main下面的build.gradle把versionCode由1更換成2,name由1.0換成1.1。

APP項目如何與插件化無縫結合(三)

然后再build lib,build bundle之后,你會看到宿主app的smallLibs下面的armeabi有很多so文件,就是我們加載的。選擇main.so文件放到你的服務器上面。在上面的那個demo里面點擊Check upgrade按鈕,等待更新完成。然后退出后臺,重啟。你會發現插件更新成功了!!!

APP項目如何與插件化無縫結合(三)


三、看看更新的代碼

主要調用checkUpgrade方法,我們看看requestUpgradeInfo

 

APP項目如何與插件化無縫結合(三)

 

里面主要是通過http請求獲取服務器bundles.json這個文件,然后去解析json.把信息存儲到UpgradeInfo里面。mResponseHandler完成回調。

APP項目如何與插件化無縫結合(三)

然后就是調用upgradeBundles方法。我們跟進去看看,這個方法具體做什么。

APP項目如何與插件化無縫結合(三)

這個方法主要是校驗服務器上bundles.json的信息,然后開始下載插件和加載插件。現在插件已經下載到你的應用儲存目錄了!!

四、Small的加載

原諒下好久沒有使用UML畫圖工具了,很多概念都忘了,畫了一個大概的流程圖,方便直觀的看。

APP項目如何與插件化無縫結合(三)

五、Small的啟動

APP項目如何與插件化無縫結合(三)

 

代碼我就不深入說了,感興趣的同學,可以按照這個圖一步步看看源碼,Small作者寫的挺不錯的,很多地方值得學習和借鑒

六、插件化的問題

插件化的實施一定不是一個人的事情,這是一個團隊的事情,很多東西都必須考慮好。這是查閱資料總結的幾個問題。后面再繼續講解初步的方案。

APP項目如何與插件化無縫結合(三)

 

系列文章

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
 

 

 本文由用戶 gtao1738 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!