本發(fā)明的實(shí)施方式涉及通信及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地,本發(fā)明的實(shí)施方式涉及應(yīng)用程序熱修復(fù)的方法、裝置和可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。
熱修復(fù)是一種快速、低成本修復(fù)應(yīng)用程序(Application,簡(jiǎn)稱App)版本缺陷的方式,其不依賴于應(yīng)用程序的版本更新來(lái)對(duì)應(yīng)用程序的漏洞進(jìn)行修復(fù),相比于升級(jí)應(yīng)用程序的版本,熱修復(fù)的主要優(yōu)勢(shì)是不會(huì)使應(yīng)用程序當(dāng)前正在運(yùn)行的業(yè)務(wù)中斷,即可以在不重新發(fā)布迭代版本的基礎(chǔ)上來(lái)對(duì)當(dāng)前的應(yīng)用程序版本的缺陷進(jìn)行修復(fù)。
目前,相關(guān)技術(shù)中提出的熱修復(fù)機(jī)制主要包括異步修復(fù)機(jī)制和同步修復(fù)機(jī)制。異步修復(fù)機(jī)制是在啟動(dòng)App時(shí),異步詢問(wèn)服務(wù)器是否需要對(duì)App進(jìn)行熱修復(fù),如果需要?jiǎng)t在異步線程中把熱修復(fù)補(bǔ)丁下載下來(lái)并存儲(chǔ),然后在合適的時(shí)機(jī)進(jìn)行加載,以修復(fù)App現(xiàn)有的缺陷;同步修復(fù)機(jī)制是在App啟動(dòng)時(shí),詢問(wèn)服務(wù)器是否需要熱修復(fù),如果需要?jiǎng)t先執(zhí)行熱修復(fù)補(bǔ)丁的下載和加載過(guò)程,然后再運(yùn)行App。
技術(shù)實(shí)現(xiàn)要素:
但是,現(xiàn)有技術(shù)中App采用的熱修復(fù)機(jī)制并不能根據(jù)實(shí)際情況靈活地進(jìn)行選擇,因此在熱修復(fù)過(guò)程中或多或少存在一定的缺陷。具體地,當(dāng)使用異步修復(fù)機(jī)制時(shí),如果App的崩潰缺陷發(fā)生在App啟動(dòng)到熱修復(fù)補(bǔ)丁下載完成這段時(shí)間段內(nèi),則熱修復(fù)補(bǔ)丁永遠(yuǎn)無(wú)法下載下來(lái),進(jìn)而會(huì)造成App的缺陷無(wú)法修復(fù);當(dāng)使用同步修復(fù)機(jī)制時(shí),如果App啟動(dòng)時(shí)有熱修復(fù)補(bǔ)丁需要下載,且補(bǔ)丁文件較大或者網(wǎng)絡(luò)環(huán)境較差,則會(huì)出現(xiàn)等待較長(zhǎng)時(shí)間才能正常運(yùn)行的問(wèn)題,嚴(yán)重影響了用戶的體驗(yàn)。
為此,非常需要一種改進(jìn)的熱修復(fù)方案,可以根據(jù)實(shí)際情況靈活地選擇應(yīng)用程序的熱修復(fù)機(jī)制,進(jìn)而確保及時(shí)修復(fù)應(yīng)用程序的缺陷,同時(shí)也能夠保證用戶的使用體驗(yàn)。
在本上下文中,本發(fā)明的實(shí)施方式期望提供一種應(yīng)用程序熱修復(fù)的方法及裝置。
在本發(fā)明實(shí)施方式的第一方面中,提供了一種應(yīng)用程序熱修復(fù)的方法,包括:?jiǎn)?dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:檢測(cè)是否能夠與所述服務(wù)器建立連接;在檢測(cè)到能夠與所述服務(wù)器建立連接時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:在檢測(cè)到不能夠與所述服務(wù)器建立連接時(shí),判斷是否已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)??;若已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序;若未下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:判斷是否需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù);在判定不需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;在判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),獲取并加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,判斷是否需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)的步驟,包括:檢測(cè)所述應(yīng)用程序的熱修復(fù)狀態(tài)是否為強(qiáng)制修復(fù)狀態(tài);在所述應(yīng)用程序的熱修復(fù)狀態(tài)為強(qiáng)制修復(fù)狀態(tài)時(shí),判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:若所述應(yīng)用程序在運(yùn)行過(guò)程中崩潰,則將所述應(yīng)用程序的熱修復(fù)狀態(tài)置為所述強(qiáng)制修復(fù)狀態(tài)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,在所述服務(wù)器指示的熱修復(fù)機(jī)制為同步修復(fù)機(jī)制的情況下,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的步驟,包括:獲取所述應(yīng)用程序的熱修復(fù)補(bǔ)?。患虞d所述應(yīng)用程序的熱修復(fù)補(bǔ)?。辉诩虞d所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,在所述服務(wù)器指示的熱修復(fù)機(jī)制為異步修復(fù)機(jī)制的情況下,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的步驟,包括:基于第一線程判斷是否已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并基于第二線程下載所述應(yīng)用程序的熱修復(fù)補(bǔ)?。蝗羲龅谝痪€程判定已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序;若所述第一線程判定未存儲(chǔ)所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:在所述服務(wù)器指示不對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)時(shí),直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:在所述應(yīng)用程序的運(yùn)行過(guò)程中,若檢測(cè)到所述應(yīng)用程序出現(xiàn)異常,則確定所述異常的類型;將所述異常的類型上報(bào)至所述服務(wù)器。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述異常的類型包括所述應(yīng)用程序版本引起的異常和/或所述應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常。
在本發(fā)明實(shí)施方式的第二方面中,提供了一種應(yīng)用程序熱修復(fù)的方法,包括:接收來(lái)自客戶端的請(qǐng)求信息;響應(yīng)所述請(qǐng)求信息,以向所述客戶端分配用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;向所述客戶端指示分配的所述熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,根據(jù)以下因素中的任一或多個(gè)的組合向所述客戶端分配所述熱修復(fù)機(jī)制:
所述應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量大小、與所述客戶端之間的網(wǎng)絡(luò)狀態(tài)、對(duì)所述客戶端的啟動(dòng)時(shí)延的要求。
在本發(fā)明實(shí)施方式的第三方面中,提供了一種應(yīng)用程序熱修復(fù)的裝置,包括:請(qǐng)求單元,用于在啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;獲取單元,用于獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;處理單元,用于基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:檢測(cè)單元,用于檢測(cè)所述應(yīng)用程序的客戶端是否能夠與所述服務(wù)器建立連接;所述請(qǐng)求單元配置為,在所述檢測(cè)單元檢測(cè)到所述客戶端能夠與所述服務(wù)器建立連接時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:第一判斷單元,用于在所述檢測(cè)單元檢測(cè)到所述客戶端不能夠與所述服務(wù)器建立連接時(shí),判斷是否已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁;所述處理單元還配置為,在所述第一判斷單元判定已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁時(shí),加載所述熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序,以及在所述第一判斷單元判定未下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁時(shí),直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:第二判斷單元,用于判斷是否需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù);所述請(qǐng)求單元配置為,在所述第二判斷單元判定不需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;所述處理單元還配置為,在所述第二判斷單元判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),獲取并加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述第二判斷單元配置為:檢測(cè)所述應(yīng)用程序的熱修復(fù)狀態(tài)是否為強(qiáng)制修復(fù)狀態(tài);在所述應(yīng)用程序的熱修復(fù)狀態(tài)為強(qiáng)制修復(fù)狀態(tài)時(shí),判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,若所述應(yīng)用程序在運(yùn)行過(guò)程中崩潰,則將所述應(yīng)用程序的熱修復(fù)狀態(tài)置為所述強(qiáng)制修復(fù)狀態(tài)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元配置為:在所述服務(wù)器指示的熱修復(fù)機(jī)制為同步修復(fù)機(jī)制的情況下,獲取所述應(yīng)用程序的熱修復(fù)補(bǔ)??;加載所述應(yīng)用程序的熱修復(fù)補(bǔ)??;在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元配置為:在所述服務(wù)器指示的熱修復(fù)機(jī)制為異步修復(fù)機(jī)制的情況下,基于第一線程判斷是否已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并基于第二線程下載所述應(yīng)用程序的熱修復(fù)補(bǔ)?。蝗羲龅谝痪€程判定已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序;若所述第一線程判定未存儲(chǔ)所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元還配置為:在所述服務(wù)器指示不對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)時(shí),直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:確定單元,用于在所述應(yīng)用程序的運(yùn)行過(guò)程中,若檢測(cè)到所述應(yīng)用程序出現(xiàn)異常,則確定所述異常的類型;上報(bào)單元,用于將所述異常的類型上報(bào)至所述服務(wù)器。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述異常的類型包括所述應(yīng)用程序版本引起的異常和/或所述應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常。
在本發(fā)明實(shí)施方式的第四方面中,提供了一種應(yīng)用程序熱修復(fù)的裝置,包括:接收單元,用于接收來(lái)自客戶端的請(qǐng)求信息;處理單元,用于響應(yīng)所述請(qǐng)求信息,以向所述客戶端分配用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;指示單元,用于向所述客戶端指示分配的所述熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,根據(jù)以下因素中的任一或多個(gè)的組合向所述客戶端分配所述熱修復(fù)機(jī)制:所述應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量大小、與所述客戶端之間的網(wǎng)絡(luò)狀態(tài)、對(duì)所述客戶端的啟動(dòng)時(shí)延的要求。
在本發(fā)明實(shí)施方式的第五方面中,提供了一種可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如前述第一方面所述的方法。
在本發(fā)明實(shí)施方式的第六方面中,提供了一種可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如前述第二方面所述的方法。
根據(jù)本發(fā)明實(shí)施方式的應(yīng)用程序熱修復(fù)的方法及裝置,通過(guò)在啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制,以基于服務(wù)器指示的熱修復(fù)機(jī)制對(duì)應(yīng)用程序進(jìn)行熱修復(fù),使得服務(wù)器能夠?qū)?yīng)用程序的熱修復(fù)機(jī)制進(jìn)行管理,進(jìn)而能夠根據(jù)實(shí)際情況靈活地選擇應(yīng)用程序的熱修復(fù)機(jī)制,以確保及時(shí)修復(fù)應(yīng)用程序的缺陷,同時(shí)也能夠保證用戶的使用體驗(yàn)。
根據(jù)本發(fā)明實(shí)施方式的應(yīng)用程序熱修復(fù)的方法及裝置,通過(guò)在應(yīng)用程序出現(xiàn)異常時(shí),確定異常的類型,即確定是應(yīng)用程序版本引起的異常還是應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常,并將異常的類型上報(bào)至服務(wù)器,使得開發(fā)人員能夠據(jù)此區(qū)分應(yīng)用程序的異常是由應(yīng)用程序的版本引起的,還是由熱修復(fù)補(bǔ)丁引起的,進(jìn)而便于開發(fā)人員對(duì)應(yīng)用程序進(jìn)行維護(hù)。
附圖說(shuō)明
通過(guò)參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:
圖1示意性示出了根據(jù)本發(fā)明的第一個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖;
圖2示意性地示出了圖1中所示的步驟S16的一個(gè)實(shí)施方式的具體流程圖;
圖3示意性地示出了圖1中所示的步驟S16的另一個(gè)實(shí)施方式的具體流程圖;
圖4示意性示出了根據(jù)本發(fā)明的第二個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖;
圖5示意性示出了根據(jù)本發(fā)明的第三個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖;
圖6示意性示出了根據(jù)本發(fā)明的第四個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖;
圖7示意性示出了根據(jù)本發(fā)明的第五個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖;
圖8示意性示出了根據(jù)本發(fā)明的實(shí)施方式的熱修復(fù)狀態(tài)的狀態(tài)機(jī)流轉(zhuǎn)圖;
圖9示意性示出了根據(jù)本發(fā)明的第六個(gè)實(shí)施方式的應(yīng)用程序熱修復(fù)的方法的流程圖;
圖10示意性示出了根據(jù)本發(fā)明的第一個(gè)實(shí)施方式的應(yīng)用程序熱修復(fù)的裝置的框圖;
圖11示意性示出了根據(jù)本發(fā)明的第二個(gè)實(shí)施方式的應(yīng)用程序熱修復(fù)的裝置的框圖。
在附圖中,相同或?qū)?yīng)的標(biāo)號(hào)表示相同或?qū)?yīng)的部分。
具體實(shí)施方式
下面將參考若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
本領(lǐng)域技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。
根據(jù)本發(fā)明的實(shí)施方式,提出了一種應(yīng)用程序熱修復(fù)的方法及裝置。
在本文中,需要理解的是,所涉及的術(shù)語(yǔ)“應(yīng)用程序”指為完成某項(xiàng)或多項(xiàng)特定工作的計(jì)算機(jī)程序,包括但不限于移動(dòng)設(shè)備(如智能手機(jī)、平板電腦等)中的App;術(shù)語(yǔ)“服務(wù)器”是指為應(yīng)用程序提供服務(wù)的計(jì)算機(jī)系統(tǒng),例如網(wǎng)易云閱讀產(chǎn)品服務(wù)器是為云閱讀應(yīng)用客戶端提供數(shù)據(jù)計(jì)算、用戶信息存儲(chǔ)、書籍管理等服務(wù);術(shù)語(yǔ)“客戶端”是與服務(wù)器相對(duì)應(yīng),為用戶提供本地服務(wù)的程序,例如用戶打開客戶端中的某個(gè)界面時(shí),客戶端發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器根據(jù)請(qǐng)求返回?cái)?shù)據(jù)到客戶端,客戶端向用戶呈現(xiàn)最終界面,又如用戶在客戶端呈現(xiàn)的界面上進(jìn)行輸入操作,客戶端發(fā)送相應(yīng)的數(shù)據(jù)到產(chǎn)品服務(wù)器,產(chǎn)品服務(wù)器對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。術(shù)語(yǔ)“熱修復(fù)補(bǔ)丁”是指用于修復(fù)軟件漏洞的一系列代碼。
此外,附圖中的任何元素?cái)?shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。
下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。
發(fā)明概述
本發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中App采用的熱修復(fù)機(jī)制并不能根據(jù)實(shí)際情況靈活地進(jìn)行選擇,因此在熱修復(fù)過(guò)程中或多或少存在一定的缺陷。
并且,現(xiàn)有的熱修復(fù)機(jī)制在對(duì)應(yīng)用程序進(jìn)行修復(fù)之后,若熱修復(fù)補(bǔ)丁中也存在缺陷,那么無(wú)法與應(yīng)用程序版本的缺陷進(jìn)行區(qū)分。
為此,本發(fā)明的實(shí)施方式提供了一種改進(jìn)的應(yīng)用程序熱修復(fù)的方法及裝置,可以根據(jù)實(shí)際情況靈活地選擇應(yīng)用程序的熱修復(fù)機(jī)制,進(jìn)而確保及時(shí)修復(fù)應(yīng)用程序的缺陷,同時(shí)也能夠保證用戶的使用體驗(yàn)。
此外,在本發(fā)明的實(shí)施方式中可以將應(yīng)用程序出現(xiàn)異常的類型上報(bào)至服務(wù)器,進(jìn)而使得開發(fā)人員能夠據(jù)此區(qū)分應(yīng)用程序的異常是由應(yīng)用程序的版本引起的還是由熱修復(fù)補(bǔ)丁引起的,方便了開發(fā)人員對(duì)應(yīng)用程序進(jìn)行維護(hù)。
在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。
應(yīng)用場(chǎng)景總覽
以下應(yīng)用場(chǎng)景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實(shí)施方式在此方面不受任何限制。相反,本發(fā)明的實(shí)施方式可以應(yīng)用于適用的任何場(chǎng)景。
場(chǎng)景一:用戶在使用移動(dòng)終端(如智能手機(jī),平板電腦等)時(shí),啟動(dòng)需要使用的應(yīng)用程序,如點(diǎn)擊需要使用的應(yīng)用程序的圖標(biāo),應(yīng)用程序在正常運(yùn)行之前,會(huì)與服務(wù)器進(jìn)行通信,以確定服務(wù)器指示的用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制,進(jìn)而基于服務(wù)器指示的熱修復(fù)機(jī)制對(duì)應(yīng)用程序進(jìn)行熱修復(fù)處理。
場(chǎng)景二:應(yīng)用程序在進(jìn)行熱修復(fù)之后,若運(yùn)行過(guò)程中出現(xiàn)異常,則會(huì)確定異常的類型,比如是由應(yīng)用程序版本引起的異常,還是由應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常,進(jìn)而將確定的異常類型上報(bào)至服務(wù)器,確保開發(fā)人員能夠據(jù)此定位故障點(diǎn),以便于開發(fā)人員對(duì)應(yīng)用程序進(jìn)行維護(hù)。
示例性方法
下面結(jié)合上述的應(yīng)用場(chǎng)景,參考圖1-圖8來(lái)描述根據(jù)本發(fā)明示例性實(shí)施方式的應(yīng)用程序熱修復(fù)的方法。
實(shí)施例一:
圖1示意性示出了根據(jù)本發(fā)明的第一個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法的流程圖。
如圖1所示,根據(jù)本發(fā)明的第一個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法,包括如下步驟:
步驟S12,啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
啟動(dòng)應(yīng)用程序的方式包括但不限于:在觸控顯示屏上點(diǎn)擊應(yīng)用程序的圖標(biāo)來(lái)啟動(dòng)應(yīng)用程序、通過(guò)輸入設(shè)置(如鼠標(biāo)、鍵盤等)選擇并啟動(dòng)應(yīng)用程序、通過(guò)聲控的方式啟動(dòng)應(yīng)用程序。
步驟S14,獲取所述服務(wù)器指示的熱修復(fù)機(jī)制。
其中,服務(wù)器可以基于如下因素(包括但不限于)來(lái)分配熱修復(fù)機(jī)制:應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量大小、與應(yīng)用程序的客戶端之間的網(wǎng)絡(luò)狀態(tài)、客戶端的啟動(dòng)時(shí)延的要求。
步驟S16,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。
根據(jù)本發(fā)明的示例性實(shí)時(shí)性,服務(wù)器指示的熱修復(fù)機(jī)制包括但不限于:同步修復(fù)、異步修復(fù)、不修復(fù)。以下分別進(jìn)行說(shuō)明:
同步修復(fù):
如圖2所示,在服務(wù)器指示的熱修復(fù)機(jī)制為同步修復(fù)機(jī)制的情況下,步驟S16包括:
步驟S162,獲取應(yīng)用程序的熱修復(fù)補(bǔ)丁。獲取熱修復(fù)補(bǔ)丁的方式可以是從服務(wù)器中下載熱修復(fù)補(bǔ)丁。
步驟S164,加載所述應(yīng)用程序的熱修復(fù)補(bǔ)??;
步驟S166,在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
異步修復(fù):
如圖3所示,在服務(wù)器指示的熱修復(fù)機(jī)制為異步修復(fù)機(jī)制的情況下,步驟S16包括:
步驟S162',基于第一線程判斷是否已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并基于第二線程下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁。
其中,第一線程可以稱為主線程,第二線程可以稱為熱修復(fù)補(bǔ)丁下載線程。
步驟S164',若所述第一線程判定已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
步驟S166',若所述第一線程判定未存儲(chǔ)所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
不修復(fù):
在所述服務(wù)器指示不對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)時(shí),直接運(yùn)行所述應(yīng)用程序。
實(shí)施例二:
如圖4所示,根據(jù)本發(fā)明的第二個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法,包括:
步驟S402,啟動(dòng)應(yīng)用程序;
步驟S404,檢測(cè)是否能夠與服務(wù)器建立連接;
步驟S406,當(dāng)檢測(cè)到能夠與所述服務(wù)器建立連接時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;
步驟S408,獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;
步驟S410,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。
同實(shí)施例一,服務(wù)器指示的熱修復(fù)機(jī)制包括但不限于:同步修復(fù)、異步修復(fù)、不修復(fù)。
實(shí)施例三:
如圖5所示,根據(jù)本發(fā)明的第三個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法,在圖4的基礎(chǔ)上,還包括:
步驟S412,在檢測(cè)到不能夠與所述服務(wù)器建立連接時(shí),判斷是否已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)?。?/p>
步驟S414,若已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序;
步驟S416,若未下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
實(shí)施例四:
如圖6所示,根據(jù)本發(fā)明的第四個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法,包括:
步驟S602,啟動(dòng)應(yīng)用程序。
步驟S604,判斷是否需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)。
根據(jù)本發(fā)明的示例性實(shí)施例,步驟S604包括:檢測(cè)所述應(yīng)用程序的熱修復(fù)狀態(tài)是否為強(qiáng)制修復(fù)狀態(tài);在所述應(yīng)用程序的熱修復(fù)狀態(tài)為強(qiáng)制修復(fù)狀態(tài)時(shí),判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)。
根據(jù)本發(fā)明的示例性實(shí)施例,若所述應(yīng)用程序在運(yùn)行過(guò)程中崩潰,則將所述應(yīng)用程序的熱修復(fù)狀態(tài)置為所述強(qiáng)制修復(fù)狀態(tài)。
步驟S606,在判定不需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
步驟S608,在判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),獲取并加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
需要說(shuō)明的是,本發(fā)明的上述實(shí)施例可以根據(jù)實(shí)際情況進(jìn)行組合,比如實(shí)施例四的方案可以與實(shí)施例一、實(shí)施例二、實(shí)施例三中的任一實(shí)施例進(jìn)行組合。
對(duì)于上述任一實(shí)施例,或者是多個(gè)實(shí)施例的組合,還可以包括如下步驟:
在應(yīng)用程序的運(yùn)行過(guò)程中,若檢測(cè)到所述應(yīng)用程序出現(xiàn)異常,則確定所述異常的類型;將所述異常的類型上報(bào)至所述服務(wù)器。其中,所述異常的類型包括所述應(yīng)用程序版本引起的異常和/或所述應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常。
通過(guò)在應(yīng)用程序出現(xiàn)異常時(shí),確定異常的類型,并將異常的類型上報(bào)至服務(wù)器,使得開發(fā)人員能夠據(jù)此區(qū)分應(yīng)用程序的異常是由應(yīng)用程序的版本引起的,還是由熱修復(fù)補(bǔ)丁引起的,進(jìn)而便于開發(fā)人員對(duì)應(yīng)用程序進(jìn)行維護(hù)。
以下結(jié)合圖7,以上述實(shí)施例二、實(shí)施例三和實(shí)施例四進(jìn)行組合為例,對(duì)組合得到的新的實(shí)施例的技術(shù)方案進(jìn)行說(shuō)明:
參照?qǐng)D7,根據(jù)本發(fā)明的第五個(gè)實(shí)施方式的應(yīng)用程序的熱修復(fù)的方法,包括:
步驟S702,App啟動(dòng)后,判斷是否有網(wǎng)絡(luò),即判斷是否能夠與服務(wù)器建立連接,若判定有網(wǎng)絡(luò),則執(zhí)行步驟S710;若判定沒有網(wǎng)絡(luò),則執(zhí)行步驟S704。
步驟S704,判斷是否有下載好的補(bǔ)丁文件需要加載,若是,則執(zhí)行步驟S706;否則,執(zhí)行步驟S708。
步驟S706,加載補(bǔ)丁文件,然后執(zhí)行步驟S708。
步驟S708,App正常運(yùn)行。
步驟S710,判斷是否需要強(qiáng)制修復(fù),若是,則執(zhí)行步驟S712;否則,執(zhí)行步驟S714。
步驟S712,下載補(bǔ)丁文件,然后執(zhí)行步驟S706。
步驟S714,向服務(wù)器請(qǐng)求熱修復(fù)機(jī)制。
步驟S716,確定服務(wù)器指示的是同步修復(fù)機(jī)制、異步修復(fù)機(jī)制還是不修復(fù)。若是同步修復(fù)機(jī)制,則執(zhí)行步驟S712;若是不修復(fù),則執(zhí)行步驟S708;若是異步修復(fù)機(jī)制,則執(zhí)行步驟S718A和步驟S718B。
步驟S718A,通過(guò)主線程判斷是否有下載好的補(bǔ)丁文件需要加載,若是,則執(zhí)行步驟S720;否則,執(zhí)行步驟S708。
步驟S718B,通過(guò)補(bǔ)丁下載線程詢問(wèn)服務(wù)器是否需要下載補(bǔ)丁,若是,則執(zhí)行步驟S722;否則該線程結(jié)束。
步驟S720,加載補(bǔ)丁文件,然后執(zhí)行步驟S708。
步驟S722,下載補(bǔ)丁文件。
步驟S724,存儲(chǔ)補(bǔ)丁文件,然后補(bǔ)丁下載線程結(jié)束。
步驟S726,在App正常運(yùn)行的過(guò)程中,如果App發(fā)生崩潰(Crash),則設(shè)置修復(fù)狀態(tài)為強(qiáng)制修復(fù),并上傳崩潰類型。該崩潰類型包括App版本引起的崩潰或者補(bǔ)丁文件引起的崩潰,當(dāng)然除了發(fā)生崩潰上報(bào)外,還可以在應(yīng)用程序出現(xiàn)其它異常時(shí)也進(jìn)行上報(bào),以便于開發(fā)人員確定是由App版本引起的異常還是補(bǔ)丁文件引起的異常。
當(dāng)設(shè)置修復(fù)狀態(tài)為強(qiáng)制修復(fù)時(shí),App下次啟動(dòng)之后啟動(dòng)強(qiáng)制修復(fù)機(jī)制。
由圖7可知,App的熱修復(fù)狀態(tài)包括同步修復(fù)、異步修復(fù)、強(qiáng)制修復(fù)(強(qiáng)制同步修復(fù))、不修復(fù)四種狀態(tài),具體的狀態(tài)機(jī)流轉(zhuǎn)如圖8所示,其中,同步修復(fù)、異步修復(fù)和不修復(fù)三種狀態(tài)由服務(wù)器調(diào)控,默認(rèn)可以是不修復(fù)(僅為示例);客戶端僅在應(yīng)用程序崩潰的時(shí)候?qū)嵝迯?fù)狀態(tài)置為強(qiáng)制修復(fù)狀態(tài)。
當(dāng)App發(fā)送崩潰性缺陷時(shí),區(qū)分是由App版本引起的缺陷還是由補(bǔ)丁文件引起的缺陷,并上報(bào)至服務(wù)器,以便于開發(fā)人員進(jìn)行處理,并通過(guò)服務(wù)器下發(fā)下次的熱修復(fù)補(bǔ)丁。
比如,以IOS App為例,當(dāng)App崩潰后,可以通過(guò)voidNSSetUncaughtExceptionHandler(NSUncaughtExceptionHandler*)來(lái)處理崩潰后的信息。
上述實(shí)施例中的方法可由運(yùn)行應(yīng)用程序的終端執(zhí)行,更具體地,由應(yīng)用程序執(zhí)行,所述的終端例如可以為手機(jī)、平板電腦、游戲機(jī)、PDA等各種電子設(shè)備。
此外,本發(fā)明的實(shí)施方式還提供了另一種應(yīng)用程序熱修復(fù)的方法,該方法可由與應(yīng)用程序的客戶端相對(duì)應(yīng)的服務(wù)器端執(zhí)行,具體如圖9所示,包括:
步驟S902,接收來(lái)自客戶端的請(qǐng)求信息。
步驟S904,響應(yīng)所述請(qǐng)求信息,以向所述客戶端分配用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
根據(jù)本發(fā)明的示例性實(shí)施例,根據(jù)以下因素中的任一或多個(gè)的組合向所述客戶端分配所述熱修復(fù)機(jī)制:所述應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量大小、與所述客戶端之間的網(wǎng)絡(luò)狀態(tài)、對(duì)所述客戶端的啟動(dòng)時(shí)延的要求。
具體來(lái)說(shuō),若應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量較大,則優(yōu)選可以采用異步修復(fù)機(jī)制,避免采用同步修復(fù)機(jī)制造成用戶的等待時(shí)間較長(zhǎng);若應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量較小,則優(yōu)選可以采用同步修復(fù)機(jī)制,當(dāng)然也可以采用異步修復(fù)機(jī)制。
若服務(wù)器與客戶端之間的網(wǎng)絡(luò)狀態(tài)較差,則優(yōu)選可以采用異步修復(fù)機(jī)制;若服務(wù)器與客戶端之間的網(wǎng)絡(luò)狀態(tài)較優(yōu),則優(yōu)選可以采用同步修復(fù)機(jī)制,當(dāng)然也可以采用異步修復(fù)機(jī)制。
若對(duì)客戶端的啟動(dòng)時(shí)延要求較高,則優(yōu)選可以采用異步修復(fù)機(jī)制;若對(duì)客戶端的啟動(dòng)時(shí)延要求較低,則既可以采用同步修復(fù)機(jī)制,也可以采用異步修復(fù)機(jī)制。
在實(shí)際應(yīng)用時(shí),也可以綜合考慮上述三個(gè)因素中的多個(gè)來(lái)確定向客戶端分配的熱修復(fù)機(jī)制。
步驟S906,向所述客戶端指示分配的所述熱修復(fù)機(jī)制。
示例性裝置
在介紹了本發(fā)明示例性實(shí)施方式的方法之后,接下來(lái),參考圖10和圖11對(duì)本發(fā)明示例性實(shí)施方式的應(yīng)用程序熱修復(fù)的裝置進(jìn)行說(shuō)明。
參照?qǐng)D10,根據(jù)本發(fā)明的第一個(gè)實(shí)施方式的應(yīng)用程序熱修復(fù)的裝置1000,包括:請(qǐng)求單元1002、獲取單元1004和處理單元1006。
具體地,請(qǐng)求單元1002用于在啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;獲取單元1004用于獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;處理單元1006用于基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:檢測(cè)單元1008,用于檢測(cè)所述應(yīng)用程序的客戶端是否能夠與所述服務(wù)器建立連接;所述請(qǐng)求單元1002配置為,在所述檢測(cè)單元1008檢測(cè)到所述客戶端能夠與所述服務(wù)器建立連接時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:第一判斷單元1010,用于在所述檢測(cè)單元1008檢測(cè)到所述客戶端不能夠與所述服務(wù)器建立連接時(shí),判斷是否已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)??;所述處理單元1006還配置為,在所述第一判斷單元1010判定已下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁時(shí),加載所述熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序,以及在所述第一判斷單元1010判定未下載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁時(shí),直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:第二判斷單元1012,用于判斷是否需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù);所述請(qǐng)求單元1002配置為,在所述第二判斷單元1012判定不需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),向所述服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;所述處理單元1006還配置為,在所述第二判斷單元1012判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)時(shí),獲取并加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述第二判斷單元1012配置為:檢測(cè)所述應(yīng)用程序的熱修復(fù)狀態(tài)是否為強(qiáng)制修復(fù)狀態(tài);在所述應(yīng)用程序的熱修復(fù)狀態(tài)為強(qiáng)制修復(fù)狀態(tài)時(shí),判定需要對(duì)所述應(yīng)用程序進(jìn)行強(qiáng)制修復(fù)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,若所述應(yīng)用程序在運(yùn)行過(guò)程中崩潰,則將所述應(yīng)用程序的熱修復(fù)狀態(tài)置為所述強(qiáng)制修復(fù)狀態(tài)。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元1006配置為:在所述服務(wù)器指示的熱修復(fù)機(jī)制為同步修復(fù)機(jī)制的情況下,獲取所述應(yīng)用程序的熱修復(fù)補(bǔ)??;加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁;在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元1006配置為:在所述服務(wù)器指示的熱修復(fù)機(jī)制為異步修復(fù)機(jī)制的情況下,基于第一線程判斷是否已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并基于第二線程下載所述應(yīng)用程序的熱修復(fù)補(bǔ)??;若所述第一線程判定已存儲(chǔ)了所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則加載所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,并在加載所述熱修復(fù)補(bǔ)丁之后運(yùn)行所述應(yīng)用程序;若所述第一線程判定未存儲(chǔ)所述應(yīng)用程序的熱修復(fù)補(bǔ)丁,則直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述處理單元1006還配置為:在所述服務(wù)器指示不對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)時(shí),直接運(yùn)行所述應(yīng)用程序。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,還包括:確定單元1014,用于在所述應(yīng)用程序的運(yùn)行過(guò)程中,若檢測(cè)到所述應(yīng)用程序出現(xiàn)異常,則確定所述異常的類型;上報(bào)單元1016,用于將所述異常的類型上報(bào)至所述服務(wù)器。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,所述異常的類型包括所述應(yīng)用程序版本引起的異常和/或所述應(yīng)用程序的熱修復(fù)補(bǔ)丁引起的異常。
參照?qǐng)D11,根據(jù)本發(fā)明的第二個(gè)實(shí)施方式的應(yīng)用程序熱修復(fù)的裝置1100,包括:接收單元1102、處理單元1104和指示單元1106。
具體地,接收單元1102用于接收來(lái)自客戶端的請(qǐng)求信息;處理單元1104用于響應(yīng)所述請(qǐng)求信息,以向所述客戶端分配用于對(duì)應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;指示單元1106用于向所述客戶端指示分配的所述熱修復(fù)機(jī)制。
在本發(fā)明的一些實(shí)施方式中,基于前述方案,根據(jù)以下因素中的任一或多個(gè)的組合向所述客戶端分配所述熱修復(fù)機(jī)制:所述應(yīng)用程序的熱修復(fù)補(bǔ)丁的數(shù)據(jù)量大小、與所述客戶端之間的網(wǎng)絡(luò)狀態(tài)、對(duì)所述客戶端的啟動(dòng)時(shí)延的要求。
示例性設(shè)備
在介紹了本發(fā)明示例性實(shí)施方式的方法和裝置之后,接下來(lái),介紹根據(jù)本發(fā)明的另一示例性實(shí)施方式的應(yīng)用程序熱修復(fù)的設(shè)備。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。
在一些可能的實(shí)施方式中,根據(jù)本發(fā)明實(shí)施方式的應(yīng)用程序熱修復(fù)的設(shè)備可以至少包括至少一個(gè)處理單元、以及至少一個(gè)存儲(chǔ)單元。其中,所述存儲(chǔ)單元存儲(chǔ)有程序代碼,當(dāng)所述程序代碼被所述處理單元執(zhí)行時(shí),使得所述處理單元執(zhí)行本說(shuō)明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的應(yīng)用程序熱修復(fù)的方法中的步驟。例如,所述處理單元可以執(zhí)行如圖1中所示的步驟S12,啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;步驟S14,獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;步驟S16,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。又如,處理單元也可以執(zhí)行如圖2至7、以及圖9中任一圖所示的步驟。
示例性程序產(chǎn)品
在一些可能的實(shí)施方式中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)所述程序產(chǎn)品在終端設(shè)備上運(yùn)行時(shí),所述程序代碼用于使所述終端設(shè)備執(zhí)行本說(shuō)明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的應(yīng)用程序熱修復(fù)的方法中的步驟,例如,所述終端設(shè)備可以執(zhí)行如圖1中所示的步驟S12,啟動(dòng)應(yīng)用程序時(shí),向服務(wù)器請(qǐng)求用于對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)的熱修復(fù)機(jī)制;步驟S14,獲取所述服務(wù)器指示的熱修復(fù)機(jī)制;步驟S16,基于所述服務(wù)器指示的熱修復(fù)機(jī)制對(duì)所述應(yīng)用程序進(jìn)行熱修復(fù)。又如,所述終端設(shè)備也可以執(zhí)行如圖2至7、以及圖9中任一圖所示的步驟。
所述程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號(hào)介質(zhì)或者可讀存儲(chǔ)介質(zhì)??勺x存儲(chǔ)介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。
可讀信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合??勺x信號(hào)介質(zhì)還可以是可讀存儲(chǔ)介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言—諸如Java、C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言—諸如“C”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算設(shè)備上執(zhí)行、部分在用戶計(jì)算設(shè)備上部分在遠(yuǎn)程計(jì)算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算設(shè)備的情形中,遠(yuǎn)程計(jì)算設(shè)備可以通過(guò)任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算設(shè)備,或者,可以連接到外部計(jì)算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了應(yīng)用程序熱修復(fù)的裝置的若干單元或子單元,但是這種劃分僅僅是示例性的,并非是強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多模塊或單元的特征和功能可以在一個(gè)模塊或單元中具體化。反之,上文描述的一個(gè)模塊或單元的特征和功能可以進(jìn)一步劃分為由多個(gè)模塊或單元來(lái)具體化。
此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
雖然已經(jīng)參考若干具體實(shí)施方式描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開的具體實(shí)施方式,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。