Android热更新开源项目Tinker集成实践总结
前言
最近項(xiàng)目集成了Tinker,開始認(rèn)為集成會(huì)比較簡(jiǎn)單,但是在實(shí)際操作的過程中還是遇到了一些問題,本文就會(huì)介紹在集成過程大家基本會(huì)遇到的主要問題。
?
考慮一:后臺(tái)的選取
目前后臺(tái)功能可以通過三種方式實(shí)現(xiàn):
1、自己搭建后臺(tái)布丁下發(fā)系統(tǒng)
2、第三方提供的服務(wù),目前如原微信simsun大神的個(gè)人tinkerpatch平臺(tái),目前出于內(nèi)測(cè)階段,暫時(shí)免費(fèi)。后期應(yīng)該會(huì)按下發(fā)量對(duì)app進(jìn)行收費(fèi)。
3、騰訊Bugly提供的服務(wù),提供了熱更新的下發(fā)后臺(tái),集成到了bugly的升級(jí)sdk中。免費(fèi)。
根據(jù)公司的精神,我們選擇了Bugly作為我們的方案,這個(gè)大家都懂得。
?
考慮二:多渠道打包的問題
我們有將近100個(gè)渠道,每個(gè)渠道需要一個(gè)不同的渠道號(hào),按product flavor的方式打出來(lái)的包的dex都有差異。這樣就造成100個(gè)渠道包的熱更新就需要100個(gè)補(bǔ)丁,這對(duì)管理簡(jiǎn)直是一個(gè)災(zāi)難。Tinker也對(duì)這種問題給出了推薦的方案,那就是使用開源項(xiàng)目packer-ng-plugin,它的原理是將渠道信息寫在apk文件的zip comment中,這樣在多渠道打包時(shí)就不會(huì)影響dex的內(nèi)容。具體關(guān)于packer-ng-plugin的介紹,可以參考文檔[Android打包工具packer-ng-plugin]。
?
考慮三:資源混淆所造成的問題
目前項(xiàng)目使用了資源混淆項(xiàng)目AndResGuard,關(guān)于AndResGuard的介紹,可以參考文檔AndResGuard[Android混淆工具AndResGuard]。
也正是引入了資源混淆,熱更新和多渠道打包都必須依賴資源混淆后生成的apk包才行。所以我們對(duì)編譯流程進(jìn)行了整合。
?
**整合前**
?
編譯:編譯直接使用AndResGuard提供的命令resguardRelease生成即可。resguardRelease生成的apk文件是沒有資源混淆的。
./gradlew resguardRelease?
Tinker生成補(bǔ)丁:直接調(diào)用tinkerPatchRelease任務(wù)生成的Release文件沒有進(jìn)行資源混淆
./gradlew tinkerPatchRelease?
多渠道打包:使用packer-ng的命令apkRelease生成多渠道文件沒有進(jìn)行資源混淆
./gradlew apkRelease?
**整合后**
主要解決兩個(gè)問題:
1、Tinker生成補(bǔ)丁的原始和新的apk,需要使用資源混淆后的apk
2、多渠道打包所使用的原始apk,需要使用資源混淆后的apk
針對(duì)問題1:
當(dāng)使用resguardRelease進(jìn)行編譯,在編譯完成后,將生成的apk文件、R文件、map文件和resouce map文件拷貝到${buildDir}/bakApk/resguard目錄下;
當(dāng)使用tinkerPatchRelease生成補(bǔ)丁時(shí),在tinkerPatchRelease任務(wù)前加入resguardTask
任務(wù),這樣生成補(bǔ)丁時(shí)使用的新舊apk都是資源混淆過的。核心的gradle代碼如下:
?
針對(duì)問題2、在AS中使用apkRelease任務(wù)打包的方式不再適用,可直接使用packer-ng所提供的命令行方式進(jìn)行生成渠道包,經(jīng)過測(cè)試,100個(gè)渠道包的確在10s左右就能打完,速度相當(dāng)之快??紤]到市場(chǎng)推廣人員會(huì)打不同渠道包,后期可做一個(gè)簡(jiǎn)易工具提供給市場(chǎng)推廣人員。
整合后操作:
編譯:
生成的apk文件放在${app}\build\bakApk\resguard\目錄下
打補(bǔ)丁包:
最終生成的補(bǔ)丁放在${app}\build\outputs\patch\目錄下
?
多渠道打包:
針對(duì)編譯后生成的包,使用packer-ng提供的命令行操作即可
?
over~~
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhangkeyu/p/6647553.html
總結(jié)
以上是生活随笔為你收集整理的Android热更新开源项目Tinker集成实践总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于github上开源nineoldan
- 下一篇: sql的四大函数