使用也避免了 客戶端利用傳輸過程中出錯的熱更新執(zhí)行代碼進(jìn)行熱更新而導(dǎo)致的系統(tǒng)出錯、崩潰等現(xiàn)象 的發(fā)生,保證了客戶端系統(tǒng)的穩(wěn)定性以及良好的用戶體驗(yàn)。
[0128] 本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機(jī)存儲記憶體(Random Access Memory,RAM)等。
[0129]以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員 來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為 本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1. 一種熱更新方法,其特征在于,包括: 檢測當(dāng)前運(yùn)行中的程序是否需要進(jìn)行熱更新; 當(dāng)確定所述程序需要進(jìn)行熱更新時,從服務(wù)器中獲取熱更新執(zhí)行代碼;所述熱更新執(zhí) 行代碼包括標(biāo)識信息與更新內(nèi)容代碼;所述標(biāo)識信息用于標(biāo)識所述程序的模塊中需要被更 新的變量或函數(shù);每個所述的變量或函數(shù)在內(nèi)存中存儲了對應(yīng)的本地內(nèi)容代碼;所述更新 內(nèi)容代碼用于替換需要被更新的變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼; 運(yùn)行所述熱更新執(zhí)行代碼,根據(jù)所述標(biāo)識信息查找需要被更新的變量或函數(shù),并將所 述更新內(nèi)容代碼替換所述變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼,以更新所述變量或函數(shù)的 內(nèi)容; 當(dāng)通過所述模塊創(chuàng)建的對象調(diào)用所述變量或函數(shù)時,以所述更新內(nèi)容代碼作為所述變 量或函數(shù)的內(nèi)容運(yùn)行。2. 如權(quán)利要求1所述的熱更新方法,其特征在于,所述當(dāng)通過所述模塊創(chuàng)建的對象調(diào)用 所述變量或函數(shù)時,以所述更新內(nèi)容代碼作為所述變量或函數(shù)的內(nèi)容運(yùn)行,具體包括: 當(dāng)通過所述模塊創(chuàng)建的對象調(diào)用所述變量或函數(shù)時,檢查所述變量或函數(shù)的內(nèi)容相對 于所述對象是否有新增的變量; 當(dāng)有新增的變量時,對所述新增的變量初始化賦值,并以所述更新內(nèi)容代碼作為所述 變量或函數(shù)的內(nèi)容運(yùn)行; 當(dāng)沒有新增的變量時,直接以所述更新內(nèi)容代碼作為所述變量或函數(shù)的內(nèi)容運(yùn)行。3. 如權(quán)利要求1或2所述的熱更新方法,其特征在于,所述檢測運(yùn)行中的程序是否需要 進(jìn)行熱更新,具體包括: 獲取所述服務(wù)器發(fā)送的關(guān)于當(dāng)前運(yùn)行中的程序的熱更新推送消息;所述熱更新推送消 息包括第一哈希信息;所述第一哈希信息為存儲在所述服務(wù)器的熱更新執(zhí)行代碼的哈希信 息; 判斷所述第一哈希信息與第二哈希信息是否一致;所述第二哈希信息為存儲在本地的 熱更新執(zhí)行代碼的哈希信息; 若所述第一哈希信息與所述第二哈希信息一致,則確定所述程序不需要進(jìn)行更新; 若所述第一哈希信息與所述第二哈希信息不一致,則確定所述程序需要進(jìn)行更新; 在所述運(yùn)行所述熱更新執(zhí)行代碼,根據(jù)所述標(biāo)識信息查找需要被更新的變量或函數(shù), 并將所述更新內(nèi)容代碼替換所述變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼,以更新所述變量或 函數(shù)的內(nèi)容之后,還包括: 存儲所述第一哈希信息,并將所述第一哈希信息覆蓋所述第二哈希信息。4. 如權(quán)利要求3所述的熱更新方法,其特征在于,所述運(yùn)行所述熱更新執(zhí)行代碼,根據(jù) 所述標(biāo)識信息查找需要被更新的變量或函數(shù),并將所述更新內(nèi)容代碼替換所述變量或函數(shù) 在內(nèi)存中的本地內(nèi)容代碼,以更新所述變量或函數(shù)的內(nèi)容,具體包括: 計算獲取到的熱更新執(zhí)行代碼的哈希信息; 判斷獲取到的熱更新執(zhí)行代碼的哈希信息與所述第一哈希信息是否一致; 若獲取到的熱更新執(zhí)行代碼的哈希信息與所述第一哈希信息一致,運(yùn)行所述熱更新執(zhí) 行代碼,根據(jù)所述標(biāo)識信息查找需要被更新的變量或函數(shù),并將所述更新內(nèi)容代碼替換所 述變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼,以更新所述變量或函數(shù)的內(nèi)容。5. 如權(quán)利要求4所述的熱更新方法,其特征在于,所述熱更新方法還包括: 若獲取到的熱更新執(zhí)行代碼的哈希信息與所述第一哈希信息不一致,則重新從服務(wù)器 獲取用于對所述程序熱更新的熱更新執(zhí)行代碼。6. 如權(quán)利要求3所述的熱更新方法,其特征在于,所述哈希信息為對應(yīng)的熱更新執(zhí)行代 碼的MD5值。7. -種熱更新裝置,其特征在于,包括: 熱更新檢測模塊,用于檢測當(dāng)前運(yùn)行中的程序是否需要進(jìn)行熱更新; 執(zhí)行代碼獲取模塊,用于當(dāng)確定所述程序需要進(jìn)行熱更新時,從服務(wù)器中獲取熱更新 執(zhí)行代碼;所述熱更新執(zhí)行代碼包括標(biāo)識信息與更新內(nèi)容代碼;所述標(biāo)識信息用于標(biāo)識所 述程序的模塊中需要被更新的變量或函數(shù);每個所述的變量或函數(shù)在內(nèi)存中存儲了對應(yīng)的 本地內(nèi)容代碼;所述更新內(nèi)容代碼用于替換需要被更新的變量或函數(shù)在內(nèi)存中的本地內(nèi)容 代碼; 執(zhí)行代碼運(yùn)行模塊,用于運(yùn)行所述熱更新執(zhí)行代碼,根據(jù)所述標(biāo)識信息查找需要被更 新的變量或函數(shù),并將所述更新內(nèi)容代碼替換所述變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼, 以更新所述變量或函數(shù)的內(nèi)容; 對象運(yùn)行模塊,用于當(dāng)通過所述模塊創(chuàng)建的對象調(diào)用所述變量或函數(shù)時,以所述更新 內(nèi)容代碼作為所述變量或函數(shù)的內(nèi)容運(yùn)行。8. 如權(quán)利要求7所述的熱更新裝置,其特征在于,所述對象運(yùn)行模塊具體包括: 變量檢查單元,用于當(dāng)通過所述模塊創(chuàng)建的對象調(diào)用所述變量或函數(shù)時,檢查所述變 量或函數(shù)的內(nèi)容相對于所述對象是否有新增的變量; 第一運(yùn)行單元,用于當(dāng)有新增的變量時,對所述新增的變量初始化賦值,并以所述更新 內(nèi)容代碼作為所述變量或函數(shù)的內(nèi)容運(yùn)行; 第二運(yùn)行單元,用于當(dāng)沒有新增的變量時,直接以所述更新內(nèi)容代碼作為所述變量或 函數(shù)的內(nèi)容運(yùn)行。9. 如權(quán)利要求7或8所述的熱更新裝置,其特征在于,所述熱更新檢測模塊具體包括: 推送消息獲取單元,用于獲取所述服務(wù)器發(fā)送的關(guān)于當(dāng)前運(yùn)行中的程序的熱更新推送 消息;所述熱更新推送消息包括第一哈希信息;所述第一哈希信息為存儲在所述服務(wù)器的 熱更新執(zhí)行代碼的哈希信息; 第一判斷單元,用于判斷所述第一哈希信息與第二哈希信息是否一致;所述第二哈希 信息為存儲在本地的熱更新執(zhí)行代碼的哈希信息; 第一確定單元,用于當(dāng)所述第一哈希信息與所述第二哈希信息一致時,確定所述程序 不需要進(jìn)行更新; 第二確定單元,用于當(dāng)所述第一哈希信息與所述第二哈希信息不一致時,確定所述程 序需要進(jìn)行更新; 所述熱更新裝置還包括哈希信息更替模塊,用于在更新所述變量或函數(shù)的內(nèi)容之后, 存儲所述第一哈希信息,并將所述第一哈希信息覆蓋所述第二哈希信息。10. 如權(quán)利要求9所述的熱更新裝置,其特征在于,所述執(zhí)行代碼運(yùn)行模塊具體包括: 哈希信息計算單元,用于計算獲取到的熱更新執(zhí)行代碼的哈希信息; 第二判斷單元,用于判斷獲取到的熱更新執(zhí)行代碼的哈希信息與所述第一哈希信息是 否一致; 執(zhí)行單元,用于當(dāng)獲取到的熱更新執(zhí)行代碼的哈希信息與所述第一哈希信息一致時, 運(yùn)行所述熱更新執(zhí)行代碼,根據(jù)所述標(biāo)識信息查找需要被更新的變量或函數(shù),并將所述更 新內(nèi)容代碼替換所述變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼,以更新所述變量或函數(shù)的內(nèi) 容。11. 如權(quán)利要求10所述的熱更新裝置,其特征在于,所述熱更新裝置還包括: 二次獲取模塊,用于當(dāng)獲取到的熱更新代碼的哈希信息與所述第一哈希信息不一致 時,重新從服務(wù)器獲取用于對所述程序熱更新的熱更新代碼。12. 如權(quán)利要求9所述的熱更新裝置,其特征在于,所述哈希信息為對應(yīng)的熱更新執(zhí)行 代碼的MD5值。
【專利摘要】本發(fā)明公開了一種熱更新方法與裝置,該方法包括:檢測當(dāng)前運(yùn)行中的程序是否需要進(jìn)行熱更新;當(dāng)確定所述程序需要進(jìn)行熱更新時,從服務(wù)器中獲取熱更新執(zhí)行代碼;所述熱更新執(zhí)行代碼包括用于標(biāo)識所述程序的模塊中需要被更新的變量或函數(shù)的標(biāo)識信息,以及用于替換需要被更新的變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼的更新內(nèi)容代碼;運(yùn)行所述熱更新執(zhí)行代碼,根據(jù)標(biāo)識信息查找需要被更新的變量或函數(shù),并將更新內(nèi)容代碼替換變量或函數(shù)在內(nèi)存中的本地內(nèi)容代碼,以更新變量或函數(shù)的內(nèi)容;當(dāng)通過模塊創(chuàng)建的對象調(diào)用變量或函數(shù)時,以所述更新內(nèi)容代碼作為所述變量或函數(shù)的內(nèi)容運(yùn)行。本方法能簡化客戶端熱更新的過程,減少熱更新所需的流量,并且減少對開發(fā)人員編寫熱更新代碼時受到的限制。
【IPC分類】G06F9/445
【公開號】CN105677415
【申請?zhí)枴緾N201610006998
【發(fā)明人】李康, 陳伊力
【申請人】網(wǎng)易(杭州)網(wǎng)絡(luò)有限公司
【公開日】2016年6月15日
【申請日】2016年1月6日