国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

微信Android熱更新Tinker使用詳解(星空武哥)

2019-10-22 18:28:38
字體:
來源:轉載
供稿:網友

Tinker是什么

Tinker是微信官方的Android熱補丁解決方案,它支持動態下發代碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。當然,你也可以使用Tinker來更新你的插件。

它主要包括以下幾個部分:
gradle編譯插件: tinker-patch-gradle-plugin
核心sdk庫: tinker-android-lib
非gradle編譯用戶的命令行版本: tinker-patch-cli.jar

為什么使用Tinker

當前市面的熱補丁方案有很多,其中比較出名的有阿里的AndFix、美團的Robust以及QZone的超級補丁方案。但它們都存在無法解決的問題,這也是正是我們推出Tinker的原因。

Android,熱更新,Tinker

總的來說:

AndFix作為native解決方案,首先面臨的是穩定性與兼容性問題,更重要的是它無法實現類替換,它是需要大量額外的開發成本的;
Robust兼容性與成功率較高,但是它與AndFix一樣,無法新增變量與類只能用做的bugFix方案;
Qzone方案可以做到發布產品功能,但是它主要問題是插樁帶來Dalvik的性能問題,以及為了解決Art下內存地址問題而導致補丁包急速增大的。
特別是在android N之后,由于混合編譯的inline策略修改,對于市面上的各種方案都不太容易解決。而Tinker熱補丁方案不僅支持類、So以及資源的替換,它還是2.X-7.X的全平臺支持。利用Tinker我們不僅可以用做bugfix,甚至可以替代功能的發布。Tinker已運行在微信的數億Android設備上,那么為什么你不使用Tinker呢?

Tinker的已知問題

由于原理與系統限制,Tinker有以下已知問題:
Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大組件;
由于Google Play的開發者條款限制,不建議在GP渠道動態更新代碼;
在Android N上,補丁對應用啟動時間有輕微的影響;
不支持部分三星android-21機型,加載補丁時會主動拋出"TinkerRuntimeException:checkDexInstall failed";
由于各個廠商的加固實現并不一致,在1.7.6以及之后的版本,tinker不再支持加固的動態更新;
對于資源替換,不支持修改remoteView。例如transition動畫,notification icon以及桌面圖標。

如何使用Tinker

下面就一BuglyTinker的使用方式進行介紹
為什么使用Bugly熱更新?
因為bugly已經集成了tinker
無需關注Tinker是如何合成補丁的
無需自己搭建補丁管理后臺
無需考慮后臺下發補丁策略的任何事情
無需考慮補丁下載合成的時機,處理后臺下發的策略
我們提供了更加方便集成Tinker的方式
我們通過HTTPS及簽名校驗等機制保障補丁下發的安全性
豐富的下發維度控制,有效控制補丁影響范圍
我們提供了應用升級一站式解決方案

至于如何使用Bugly熱更新看文檔就可以了,今天我就說一說官網文檔中多渠道補丁的一些錯誤(今天以Bugly1.2.2(tinker1.7.6))為例

在project的build.gradle中添加依賴

Android,熱更新,Tinker

配置app build.gradle

這里要注意,官方給出的project.tinkerPatch.oldApk、project.tinkerPatch.buildConfig.applyMapping、project.tinkerPatch.buildConfig.applyResourceMapping三個配置路徑有錯誤,tinker 1.7.6也存在多渠道打包有bug(和官方溝通后證實了這一點)
我們在進行多渠道打包的時候會執行下面的命令,他打出的補丁包都是一樣的,通過查看補丁包內的YAPATCH.MF文件就可以證明,官網表示會在下一個版本中修復

Android,熱更新,Tinker

這里的簽名方式不懂可以看這篇文章:http://m.survivalescaperooms.com/article/122745.htm

這里的配置的config.gradle不明白可以看這篇文章:http://m.survivalescaperooms.com/article/122746.htm

tinker-support.gradle的配置,

Android,熱更新,Tinker

配置config.gradle

Android,熱更新,Tinker

其他配置

不要忘了混淆,還有關于適配Android7.0系統的配置,這里就不說了。

接下來我們執行下面的命令開始生成基準包(一定要保留好基準包)

tinkerPatchAllFlavorRelease

Android,熱更新,Tinker

生成生產版本的apk后,如果我們發現bug,可以修復bug,然后生成補丁包。

Android,熱更新,Tinker

生成完補丁包后,就可以借助Bugly的熱更新進行修復了,找到我們注冊的app,上傳補丁包

Android,熱更新,Tinker

 

Android,熱更新,Tinker
 

tinker是在我們打開app的時候去檢查服務器有沒有補丁包,以及本地有沒有補丁包,如果檢測到了就去下載,然后會在下次啟動app的進行補丁的修復。這樣通過Bugly我們不用去搭建下發補丁包的服務器了,特別方便。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 射洪县| 绥棱县| 湖北省| 娄烦县| 汉中市| 松潘县| 基隆市| 远安县| 铜鼓县| 海丰县| 西城区| 乌兰浩特市| 汝州市| 兴城市| 印江| 阳新县| 德江县| 通许县| 子长县| 桑日县| 平度市| 荔浦县| 福清市| 宜君县| 乌兰县| 丹阳市| 曲阜市| 百色市| 吉安市| 潢川县| 昌邑市| 河北区| 凭祥市| 琼海市| 海伦市| 灌阳县| 佛坪县| 内丘县| 宜都市| 牡丹江市| 婺源县|