在集成bugly熱修復(fù)框架時(shí),按照官方教程,《 Bugly Android熱更新使用指南 》的bugly配置,發(fā)現(xiàn)當(dāng)后期要發(fā)布熱更新時(shí),提示"未匹配到可應(yīng)用補(bǔ)丁包的App版本,請(qǐng)確認(rèn)補(bǔ)丁包的基線(xiàn)版本是否已發(fā)布"。

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶(hù)提供了成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),一元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián)建站,貼合企業(yè)需求,高性?xún)r(jià)比,滿(mǎn)足客戶(hù)不同層次的需求一站式服務(wù)歡迎致電。
找了很久終于發(fā)現(xiàn)是因?yàn)楣俜绞褂弥改仙?=少了配置項(xiàng)==,官方教程是這樣的:
正確的應(yīng)該是:
==注意官方教程是少了這個(gè):==
另外,一般我們的MyApplication都不會(huì)直接繼承自bugly要求的TinkerApplication,而是在自己的MyApplication中配置相關(guān)項(xiàng),所以還需==注意==:
其他方面按照官方指南來(lái)就好啦~~~~
通過(guò)閱讀官方的技術(shù)文檔,始終沒(méi)有發(fā)現(xiàn)有對(duì)這個(gè)情況的相關(guān)配置項(xiàng),所以只能從別處下手,最后發(fā)現(xiàn),通過(guò)在 app module 的 “build.gradle” 文件中,注釋掉依賴(lài)插件腳本,最終解決掉這個(gè)問(wèn)題:
說(shuō)兩句:
目前運(yùn)行調(diào)試一切正常,不過(guò)要始終留意后續(xù)是否會(huì)出現(xiàn)問(wèn)題;重要的一點(diǎn)是,當(dāng)要打包新版本時(shí),一定要解開(kāi)這個(gè)注釋。
2、can’t the get signConfig for this build
問(wèn)題:
執(zhí)行 buildTinkerPatchRelease 打 Release 版本補(bǔ)丁包時(shí)報(bào)以下錯(cuò)誤:
Error:Execution failed for task ':app:tinkerPatchRelease'.
can't the get signConfig for this build
1
2
解決:
android {
...
// 簽名配置【buildTypes中調(diào)用了signingConfigs,則signingConfigs{}要置于buildTypes{}前面】
signingConfigs {
release {
try {
storeFile file("MyProject.jks")
storePassword "111111"
keyAlias "zhangzeqiao"
keyPassword "111111"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
debug {
...
signingConfig signingConfigs.release
}
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其中要特別注意,signingConfigs{} 方法體要置于 buildTypes{} 方法體前面,不然會(huì)報(bào)以下錯(cuò)誤:
一.基礎(chǔ)知識(shí)
1.阿里的熱更新框架已經(jīng)開(kāi)源 了。但已經(jīng)很久沒(méi)有更新過(guò)新版本了。當(dāng)前的版本只支持到了 Android 4.4。由于 5.0 起新的 ART 虛擬機(jī)、更嚴(yán)格的 SELinux 策略以及對(duì) 64 位的支持之類(lèi)的事,使得 Xposed 都在開(kāi)發(fā)上做了很多調(diào)整。我不知道 Dexposed 現(xiàn)在是否支持,但至少阿里沒(méi)有開(kāi)源。
2.在本地動(dòng)態(tài)執(zhí)行遠(yuǎn)端下發(fā)的代碼是極度危險(xiǎn)的行為。利用此方法執(zhí)行非法代碼等或用于繞過(guò) Google Play 等市場(chǎng)的審查是違反相關(guān)協(xié)議的,也是對(duì)用戶(hù)極度不負(fù)責(zé)任的行為。
3.在一些訪問(wèn)非常密集的地方使用熱更新可能會(huì)對(duì)效率產(chǎn)生相對(duì)比較大的影響,應(yīng)該避免使用.
4.我們可以對(duì) Java 的 ScriptEngine 進(jìn)行一些封裝成為一個(gè) HotPatch 類(lèi)使得它更適合做熱更新的工作。
5.首先,檢查熱更新補(bǔ)丁的管道一定要建立在 https 上,因?yàn)橄掳l(fā)代碼是極其危險(xiǎn)的,如果被劫持,后果是無(wú)法想象的。其次,請(qǐng)求時(shí)最好自動(dòng)帶上 Android 版本、手機(jī)型號(hào)、地區(qū)、版本號(hào)等信息,以方便更精確地下發(fā),千萬(wàn)不能下發(fā)錯(cuò)。
6.Java在運(yùn)行時(shí)加載對(duì)應(yīng)的類(lèi)是通過(guò)ClassLoader來(lái)實(shí)現(xiàn)的,ClassLoader本身是一個(gè)抽象來(lái),Android中使用PathClassLoader類(lèi)作為Android的默認(rèn)的類(lèi)加載器
7.我們的如果想做hotpatch,一定要保證我們的hotpacth dex文件出現(xiàn)在dexElements列表的前面。
二.常用的熱更新技術(shù)框架:
基于QQ空間的HotFix →→ 要使用到android dex分包方案→拆分dex的項(xiàng)目的話(huà),可以參考一下谷歌的multidex方案實(shí)現(xiàn).
大眾點(diǎn)評(píng)的NuWa←項(xiàng)目補(bǔ)丁自動(dòng)化做的很完整
alibaba/AndFix
阿里巴巴的DexPosed
dalvik_patch實(shí)現(xiàn)multidex
使用React-Native實(shí)現(xiàn)app熱部署的一次實(shí)踐
alibaba/AndFix
三、常用的熱更新技術(shù)框架比較
Advantage
disadavantage
NuWa
1,可以新增類(lèi)和字段,
2,兼容到6.0系統(tǒng)
1,基本原理是classloader,類(lèi)加載器
2,不能修改資源文件,如圖片布局等(可通過(guò)動(dòng)態(tài)布局實(shí)現(xiàn))
AndFix
1, 支持Android2.3到6.0版本
2, 支持arm與x86系統(tǒng)架構(gòu)
3, 支持dalvik和ART的runtime
4, 不需要重啟App即可應(yīng)用補(bǔ)丁
1,不能新增類(lèi)和字段,
2,不能修改資源文件,
3,不能修改manifest文件
4,不能新增成員變量
5,不能使用加固后的apk制作pacth文件
四、github地址
百度的同學(xué)的實(shí)現(xiàn) HotFix
點(diǎn)評(píng)的同學(xué)的實(shí)現(xiàn) Nuwa
阿里的同學(xué)的實(shí)現(xiàn) AndFix
另:AndFix對(duì)static的支持不太好,下面是試驗(yàn)的Demo:
添加了一個(gè)靜態(tài)的字段addString:
通過(guò)AndFix來(lái)制作patch會(huì)直接報(bào)錯(cuò):
當(dāng)前標(biāo)題:android熱更新,android熱更新技術(shù)
文章網(wǎng)址:http://chinadenli.net/article37/dseeepj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、云服務(wù)器、網(wǎng)站策劃、網(wǎng)站排名、微信小程序、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)