本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序修復(fù)方法及終端設(shè)備。
背景技術(shù):
目前,隨著終端設(shè)備技術(shù)的不斷發(fā)展,市場(chǎng)上的應(yīng)用程序越來(lái)越多。在用戶使用應(yīng)用程序的過(guò)程中,當(dāng)應(yīng)用程序出現(xiàn)故障時(shí),應(yīng)用程序開(kāi)發(fā)者通常開(kāi)發(fā)修復(fù)文件,以對(duì)應(yīng)用程序的故障進(jìn)行修復(fù)。
在現(xiàn)有技術(shù)中,當(dāng)應(yīng)用程序出現(xiàn)故障之后,應(yīng)用程序開(kāi)發(fā)者根據(jù)應(yīng)用程序的故障開(kāi)發(fā)修復(fù)文件,并將修復(fù)文件上傳至應(yīng)用程序服務(wù)器。當(dāng)用戶在終端設(shè)備中啟動(dòng)應(yīng)用程序時(shí),終端設(shè)備判斷服務(wù)器中是否存在該應(yīng)用程序?qū)?yīng)的修復(fù)文件,若存在,則終端設(shè)備在服務(wù)器中下載修復(fù)文件,同時(shí),終端設(shè)備還對(duì)應(yīng)用程序進(jìn)行啟動(dòng)。在終端設(shè)備下載得到修復(fù)文件之后,通過(guò)修復(fù)文件修復(fù)應(yīng)用程序中的故障。
然而,終端設(shè)備向服務(wù)器請(qǐng)求下載修復(fù)文件消耗的時(shí)間較長(zhǎng),在終端設(shè)備下載修復(fù)文件的過(guò)程中,應(yīng)用程序可能出現(xiàn)故障,使得終端設(shè)備無(wú)法根據(jù)修復(fù)文件對(duì)應(yīng)用進(jìn)行修復(fù),導(dǎo)致對(duì)應(yīng)用程序修復(fù)的可靠性低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種應(yīng)用程序修復(fù)方法及終端設(shè)備,提高了應(yīng)用程序修復(fù)的可靠性。
第一方面,本發(fā)明實(shí)施例提供一種應(yīng)用程序修復(fù)方法,應(yīng)用于終端設(shè)備,所述方法包括:
在獲取得到應(yīng)用程序的啟動(dòng)指令之后,獲取所述應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài);
判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)是否均為第一狀態(tài),所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)為所述第一狀態(tài)用于指示在終端設(shè)備上一次下載所述應(yīng)用程序的修復(fù)文件的過(guò)程中,所述應(yīng)用出現(xiàn)了異常;
若是,則向服務(wù)器請(qǐng)求下載修復(fù)文件,并在所述修復(fù)文件下載完成之后,根據(jù)所述修復(fù)文件啟動(dòng)所述應(yīng)用程序;
若否,判斷是否需要向所述服務(wù)器請(qǐng)求下載修復(fù)文件,若是,則同時(shí)向服務(wù)器請(qǐng)求下載修復(fù)文件、及啟動(dòng)所述應(yīng)用程序。
在一種可能的實(shí)施方式中,在所述修復(fù)文件下載完成之后,還包括:
將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài);
將所述異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在另一種可能的實(shí)施方式中,判斷是否需要向所述服務(wù)器請(qǐng)求獲取修復(fù)文件,包括:
向所述服務(wù)器請(qǐng)求獲取所述服務(wù)器中存儲(chǔ)的最新修復(fù)文件的標(biāo)識(shí);
根據(jù)所述終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)、和所述最新修復(fù)文件的標(biāo)識(shí),判斷是否需要向所述服務(wù)器請(qǐng)求獲取所述修復(fù)文件。
在另一種可能的實(shí)施方式中,同時(shí)向服務(wù)器請(qǐng)求獲取修復(fù)文件、及啟動(dòng)所述應(yīng)用程序,包括:
創(chuàng)建第一線程和第二線程,所述第一線程和所述第二線程為異步線程;
通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求,并接收所述服務(wù)器發(fā)送的所述修復(fù)文件;
通過(guò)所述第二線程啟動(dòng)所述應(yīng)用程序。
在另一種可能的實(shí)施方式中,在通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求之后,還包括:
獲取所述下載標(biāo)識(shí)的狀態(tài);
若所述下載標(biāo)識(shí)的狀態(tài)為第二狀態(tài),則將所述下載標(biāo)識(shí)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,在將所述下載標(biāo)識(shí)設(shè)置為第一狀態(tài)之后,還包括:
在下載完所述修復(fù)文件之后,生成所述修復(fù)文件的下載完成指令;
根據(jù)所述下載完成指令,將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在另一種可能的實(shí)施方式中,在啟動(dòng)所述應(yīng)用程序之后,還包括:
在所述應(yīng)用程序異常時(shí),生成所述應(yīng)用程序的異常指令;
根據(jù)所述異常指令,將所述異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,所述修復(fù)文件中包括修復(fù)代碼和驗(yàn)證信息,所述驗(yàn)證信息為所述服務(wù)器對(duì)所述服務(wù)器中的修復(fù)代碼進(jìn)行md5加密、及通過(guò)預(yù)設(shè)私鑰進(jìn)行rsa加密得到的信息;相應(yīng)的,在所述修復(fù)文件下載完成之后,還包括:
通過(guò)預(yù)設(shè)公鑰對(duì)應(yīng)所述簽名信息進(jìn)行解密,得到第一md5信息,所述預(yù)設(shè)公鑰與所述預(yù)設(shè)私鑰為非對(duì)稱密碼;
對(duì)所述修復(fù)文件中的修復(fù)代碼進(jìn)行md5加密,得到第二md5信息;
若所述第一md5信息和所述第二md5信息相同,則確定所述修復(fù)文件中的修復(fù)代碼正確。
第二方面,本發(fā)明實(shí)施例提供一種終端設(shè)備,包括獲取模塊、判斷模塊、下載模塊、啟動(dòng)模塊,其中,
所述獲取模塊用于,在獲取得到應(yīng)用程序的啟動(dòng)指令之后,獲取所述應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài);
所述判斷模塊用于,判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)是否均為第一狀態(tài),所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)為所述第一狀態(tài)用于指示在終端設(shè)備上一次下載所述應(yīng)用程序的修復(fù)文件的過(guò)程中,所述應(yīng)用出現(xiàn)了異常;
所述下載模塊用于,在所述判斷模塊判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)均為第一狀態(tài)時(shí),向服務(wù)器請(qǐng)求下載修復(fù)文件;相應(yīng)的,所述啟動(dòng)模塊用于,在所述下載模塊下載完成所述修復(fù)文件之后,根據(jù)所述修復(fù)文件啟動(dòng)所述應(yīng)用程序;
在所述判斷模塊判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)不同時(shí)為第一狀態(tài)時(shí),所述判斷模塊還用于,判斷是否需要向所述服務(wù)器請(qǐng)求下載修復(fù)文件,在所述判斷模塊判斷需要向所述服務(wù)器請(qǐng)求下載修復(fù)文件時(shí),在所述下載模塊向服務(wù)器請(qǐng)求下載修復(fù)文件的同時(shí),所述啟動(dòng)模塊啟動(dòng)所述應(yīng)用程序。
在一種可能的實(shí)施方式中,,所述終端設(shè)備還包括設(shè)置模塊,其中,
所述設(shè)置模塊用于,在所述下載模塊下載完成所述修復(fù)文件之后,將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài),將所述異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在另一種可能的實(shí)施方式中,所述判斷模塊具體用于:
向所述服務(wù)器請(qǐng)求獲取所述服務(wù)器中存儲(chǔ)的最新修復(fù)文件的標(biāo)識(shí);
根據(jù)所述終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)、和所述最新修復(fù)文件的標(biāo)識(shí),判斷是否需要向所述服務(wù)器請(qǐng)求獲取所述修復(fù)文件。
在另一種可能的實(shí)施方式中,所述終端設(shè)備還包括創(chuàng)建模塊,其中,
所述創(chuàng)建模塊用于,創(chuàng)建第一線程和第二線程,所述第一線程和所述第二線程為異步線程;
相應(yīng)的,所述下載模塊具體用于,通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求,并接收所述服務(wù)器發(fā)送的所述修復(fù)文件;
所述啟動(dòng)模塊具體用于,通過(guò)所述第二線程啟動(dòng)所述應(yīng)用程序。
在另一種可能的實(shí)施方式中,所述獲取模塊還用于,在所述下載模塊在通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求之后,獲取所述下載標(biāo)識(shí)的狀態(tài);
所述設(shè)置模塊還用于,在所述下載標(biāo)識(shí)的狀態(tài)為第二狀態(tài)時(shí),將所述下載標(biāo)識(shí)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,所述終端設(shè)備還包括生成模塊,其中,
所述生成模塊用于,在所述下載模塊下載完所述修復(fù)文件之后,生成所述修復(fù)文件的下載完成指令;
所述設(shè)置模塊還用于,根據(jù)所述下載完成指令,將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在另一種可能的實(shí)施方式中,所述生成模塊還用于,在所述啟動(dòng)模塊啟動(dòng)所述應(yīng)用程序之后,在所述應(yīng)用程序異常時(shí),生成所述應(yīng)用程序的異常指令;
所述設(shè)置模塊還用于,根據(jù)所述異常指令,將所述異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,所述修復(fù)文件中包括修復(fù)代碼和驗(yàn)證信息,所述驗(yàn)證信息為所述服務(wù)器對(duì)所述服務(wù)器中的修復(fù)代碼進(jìn)行md5加密、及通過(guò)預(yù)設(shè)私鑰進(jìn)行rsa加密得到的信息;所述終端設(shè)備還包括驗(yàn)證模塊,其中,在所述下載模塊下載完成所述修復(fù)文件之后,所述驗(yàn)證模塊用于:
通過(guò)預(yù)設(shè)公鑰對(duì)應(yīng)所述簽名信息進(jìn)行解密,得到第一md5信息,所述預(yù)設(shè)公鑰與所述預(yù)設(shè)私鑰為非對(duì)稱密碼;
對(duì)所述修復(fù)文件中的修復(fù)代碼進(jìn)行md5加密,得到第二md5信息;
若所述第一md5信息和所述第二md5信息相同,則確定所述修復(fù)文件中的修復(fù)代碼正確。
本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法及終端設(shè)備,當(dāng)需要在終端設(shè)備中啟動(dòng)應(yīng)用程序時(shí),終端設(shè)備獲取應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài),若下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài)指示,終端設(shè)備上一次下載應(yīng)用程序的修復(fù)文件的過(guò)程中應(yīng)用出現(xiàn)了異常時(shí),終端設(shè)備則先下載修復(fù)文件,并在修復(fù)文件下載完成之后,再啟動(dòng)應(yīng)用程序,進(jìn)而避免終端設(shè)備下載完成修復(fù)文件之前,應(yīng)用程序出現(xiàn)異常,進(jìn)而提高應(yīng)用程序修復(fù)的可靠性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的應(yīng)用場(chǎng)景示意圖;
圖2為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的流程示意圖一;
圖3為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的流程示意圖二;
圖4為本發(fā)明實(shí)施例提供的終端設(shè)備的結(jié)構(gòu)示意圖一;
圖5為本發(fā)明實(shí)施例提供的終端設(shè)備的結(jié)構(gòu)示意圖二。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的應(yīng)用場(chǎng)景示意圖。請(qǐng)參見(jiàn)圖1,包括終端設(shè)備101和服務(wù)器102。終端設(shè)備101可以為手機(jī)、電腦、電視等設(shè)備。在終端設(shè)備101可以從服務(wù)器102中下載應(yīng)用程序,并在終端設(shè)備中安裝應(yīng)用程序。在實(shí)際應(yīng)用過(guò)程中,應(yīng)用程序維護(hù)者會(huì)根據(jù)應(yīng)用程序的故障開(kāi)發(fā)修復(fù)文件,并在服務(wù)器中上傳最新的修復(fù)文件。在終端設(shè)備啟動(dòng)時(shí),終端設(shè)備101可以從服務(wù)器102中下載最新的修復(fù)文件,并根據(jù)最新的修復(fù)文件對(duì)應(yīng)用程序進(jìn)行修復(fù)。
在本申請(qǐng)中,在應(yīng)用程序中還包括下載標(biāo)識(shí)和異常標(biāo)識(shí)。下載標(biāo)識(shí)和異常標(biāo)識(shí)可以為第一狀態(tài)或者第二狀態(tài),例如,第一狀態(tài)可以為true,第二狀態(tài)可以為false。若應(yīng)用程序出現(xiàn)異常,則將異常標(biāo)識(shí)設(shè)置為第一狀態(tài)。在終端設(shè)備開(kāi)始下載應(yīng)用程序?qū)?yīng)的修復(fù)文件時(shí),將下載標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài);在終端設(shè)備下載完成應(yīng)用程序?qū)?yīng)的修復(fù)文件時(shí),將下載標(biāo)識(shí)的狀態(tài)設(shè)置為第二狀態(tài),并將異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。相應(yīng)的,在終端設(shè)備中啟動(dòng)應(yīng)用程序時(shí),可以根據(jù)下載標(biāo)識(shí)和異常標(biāo)識(shí)的狀態(tài)確定下載修復(fù)文件的方式,進(jìn)而避免在下載完成修復(fù)文件之前,應(yīng)用程序出現(xiàn)故障,進(jìn)而提高對(duì)應(yīng)用程序修復(fù)的可靠性。
下面,通過(guò)具體實(shí)施例對(duì)本申請(qǐng)所示的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。下面這幾個(gè)具體的實(shí)施例可以相互結(jié)合,對(duì)于相同或相似的概念或過(guò)程可能在某些實(shí)施例中不再贅述。
圖2為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的流程示意圖一。該方法的執(zhí)行主體為終端設(shè)備,請(qǐng)參見(jiàn)圖2,該方法可以包括:
s201、在獲取得到應(yīng)用程序的啟動(dòng)指令之后,獲取應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài)。
在本發(fā)明實(shí)施例中,在終端設(shè)備安裝應(yīng)用程序之后,該應(yīng)用程序的下載標(biāo)識(shí)的初始狀態(tài)為第二狀態(tài)、異常標(biāo)識(shí)的初始狀態(tài)也為第二狀態(tài)。在實(shí)際應(yīng)用過(guò)程中,下載標(biāo)識(shí)的狀態(tài)與是否存在應(yīng)用程序?qū)?yīng)的、未下載完成的修復(fù)文件有關(guān),異常標(biāo)識(shí)的狀態(tài)與終端設(shè)備中是否存在應(yīng)用程序?qū)?yīng)的未下載完成的應(yīng)用程序、及應(yīng)用程序是否發(fā)生異常有關(guān)。用戶無(wú)法手動(dòng)修改下載標(biāo)識(shí)的狀態(tài)及異常標(biāo)識(shí)的狀態(tài)。終端設(shè)備的重啟、應(yīng)用程序的重啟也不會(huì)修改下載標(biāo)識(shí)的狀態(tài)及異常標(biāo)識(shí)的狀態(tài)。
可選的,若應(yīng)用程序出現(xiàn)異常,則將異常標(biāo)識(shí)設(shè)置為第一狀態(tài)。在終端設(shè)備開(kāi)始下載應(yīng)用程序?qū)?yīng)的修復(fù)文件時(shí),將下載標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài),在終端設(shè)備下載完成應(yīng)用程序?qū)?yīng)的修復(fù)文件時(shí),將下載標(biāo)識(shí)的狀態(tài)設(shè)置為第二狀態(tài),并將異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在實(shí)際該應(yīng)用,當(dāng)用戶需要在終端設(shè)備中啟動(dòng)應(yīng)用程序時(shí),用戶可以在終端設(shè)備中對(duì)應(yīng)用程序的圖標(biāo)進(jìn)行點(diǎn)擊操作,以實(shí)現(xiàn)在終端設(shè)備中輸入應(yīng)用程序?qū)?yīng)的啟動(dòng)指令,以使終端設(shè)備獲取應(yīng)用程序的啟動(dòng)指令。
在終端設(shè)備獲取得到應(yīng)用程序的啟動(dòng)指令之后,終端設(shè)備獲取應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài)。可選的,下載標(biāo)識(shí)和異常標(biāo)識(shí)可以為預(yù)先設(shè)置在應(yīng)用程序中的兩個(gè)參數(shù),例如,下載標(biāo)識(shí)可以為hotfixisdownloading參數(shù),異常標(biāo)識(shí)可以為iscrash參數(shù)。該兩個(gè)參數(shù)的第一狀態(tài)可以為true,該兩個(gè)參數(shù)的第二狀態(tài)可以為false。
s202、判斷下載標(biāo)識(shí)和異常標(biāo)識(shí)是否均為第一狀態(tài)。
若是,則執(zhí)行s203。若否,則執(zhí)行s204。
當(dāng)下載標(biāo)識(shí)和異常標(biāo)識(shí)均為第一狀態(tài)時(shí),說(shuō)明終端設(shè)備在上一次下載應(yīng)用程序的修復(fù)文件的過(guò)程中,應(yīng)用程序出現(xiàn)了異常,這樣,導(dǎo)致終端設(shè)備未能成功下載修復(fù)文件。
當(dāng)下載標(biāo)識(shí)為第一狀態(tài)、異常標(biāo)識(shí)為第二狀態(tài)時(shí),說(shuō)明終端設(shè)備在上一次下載修復(fù)文件的過(guò)程中,由于網(wǎng)絡(luò)中斷、用戶退出應(yīng)用程序等而導(dǎo)致的修復(fù)文件未完成下載。此時(shí),由于應(yīng)用程序未出現(xiàn)異常,因此,異常標(biāo)識(shí)為第二狀態(tài)。
當(dāng)下載標(biāo)識(shí)為第二狀態(tài)、異常標(biāo)識(shí)為第一狀態(tài)時(shí),說(shuō)明應(yīng)用程序在上一次運(yùn)行過(guò)程中,無(wú)需下載修復(fù)文件、或者成功下載了修復(fù)文件,且應(yīng)用程序出現(xiàn)了異常。
當(dāng)下載標(biāo)識(shí)和異常標(biāo)識(shí)均為第二狀態(tài)時(shí),說(shuō)明應(yīng)用程序在上一次運(yùn)行過(guò)程中,無(wú)需下載修復(fù)文件、或者成功下載了修復(fù)文件,且應(yīng)用程序未出現(xiàn)異常。
s203、向服務(wù)器請(qǐng)求下載修復(fù)文件,并在修復(fù)文件下載完成之后,根據(jù)修復(fù)文件啟動(dòng)應(yīng)用程序。
當(dāng)下載標(biāo)識(shí)和異常標(biāo)識(shí)均為第一狀態(tài)時(shí),說(shuō)明終端設(shè)備在上一次下載應(yīng)用程序的修復(fù)文件的過(guò)程中,應(yīng)用程序出現(xiàn)了異常,進(jìn)而導(dǎo)致終端設(shè)備未能成功下載修復(fù)文件。由于應(yīng)用程序的故障點(diǎn)通常類似,因此,在本次啟動(dòng)應(yīng)用程序的過(guò)程中,有可能在終端設(shè)備下載完修復(fù)文件之前,應(yīng)用程序出現(xiàn)故障。此時(shí),為了避免在終端設(shè)備下載完修復(fù)文件之前,應(yīng)用程序再次出現(xiàn)故障,終端設(shè)備先向服務(wù)器請(qǐng)求下載修復(fù)文件,并在修復(fù)文件下載完成之后,在啟動(dòng)應(yīng)用程序,這樣,可以確保應(yīng)用程序正常啟動(dòng)。
可選的,在終端設(shè)備下載完修復(fù)文件之后,終端設(shè)備開(kāi)始啟動(dòng)應(yīng)用程序,在啟動(dòng)應(yīng)用程序的過(guò)程中,通過(guò)應(yīng)用程序中預(yù)設(shè)設(shè)置的修復(fù)接口獲取修復(fù)文件中的修復(fù)代碼,并將修復(fù)代碼替換應(yīng)用程序中的故障代碼,使得應(yīng)用程序的故障得以修復(fù)。
可選的,在修復(fù)文件下載完成之后,將下載標(biāo)識(shí)設(shè)置為第二狀態(tài),并將異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。
需要說(shuō)明的是,在應(yīng)用程序啟動(dòng)之后,若應(yīng)用程序出現(xiàn)異常,則終端設(shè)備生成應(yīng)用程序的異常指令,并根據(jù)異常指令,將異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)??蛇x的,在應(yīng)用程序出現(xiàn)異常之后,終端設(shè)備會(huì)調(diào)用應(yīng)用程序中的預(yù)設(shè)函數(shù),并通過(guò)該預(yù)設(shè)函數(shù)將異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)。
s204、判斷是否需要向服務(wù)器請(qǐng)求下載修復(fù)文件。
若是,則執(zhí)行s205。若否,則執(zhí)行s206。
可選的,終端設(shè)備可以向服務(wù)器請(qǐng)求獲取服務(wù)器中存儲(chǔ)的最新修復(fù)文件的標(biāo)識(shí),根據(jù)終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)、和最新修復(fù)文件的標(biāo)識(shí),判斷是否需要向服務(wù)器請(qǐng)求獲取修復(fù)文件。
可選的,最新修復(fù)文件的標(biāo)識(shí)可以為最新修復(fù)文件的版本號(hào)、生成日期等,終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)可以為本地存儲(chǔ)的修復(fù)文件的版本號(hào)、生成日期等。
當(dāng)終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)與最新修復(fù)文件的標(biāo)識(shí)相同時(shí),則確定無(wú)需向服務(wù)器請(qǐng)求下載修復(fù)文件,否則,則需要向服務(wù)器請(qǐng)求下載修復(fù)文件。
s205、同時(shí)向服務(wù)器請(qǐng)求下載修復(fù)文件、及啟動(dòng)應(yīng)用程序。
當(dāng)下載標(biāo)識(shí)和異常標(biāo)識(shí)不同時(shí)為第一狀態(tài)、且需要向服務(wù)器請(qǐng)求下載修復(fù)文件時(shí),為了提高應(yīng)用程序的啟動(dòng)效率,則同時(shí)向服務(wù)器請(qǐng)求下載修復(fù)文件、及啟動(dòng)應(yīng)用程序。
可選的,終端設(shè)備可以創(chuàng)建第一線程和第二線程,第一線程和第二線程為異步線程;通過(guò)第一線程向服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求,并接收服務(wù)器發(fā)送的修復(fù)文件;通過(guò)第二線程啟動(dòng)應(yīng)用程序。這樣,可以通過(guò)第一線程和第二線程同時(shí)執(zhí)行下載修復(fù)文件及啟動(dòng)應(yīng)用程序。
可選的,在終端設(shè)備通過(guò)第一線程向服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求之后,獲取下載標(biāo)識(shí)的狀態(tài);若下載標(biāo)識(shí)的狀態(tài)為第二狀態(tài),則將下載標(biāo)識(shí)設(shè)置為第一狀態(tài)。
可選的,在終端設(shè)備下載完修復(fù)文件之后,生成修復(fù)文件的下載完成指令,并根據(jù)下載完成指令,將下載標(biāo)識(shí)設(shè)置為第二狀態(tài)。
需要說(shuō)明的是,在終端設(shè)備下載修復(fù)文件的過(guò)程中,應(yīng)用程序可能出現(xiàn)異常,或者在終端設(shè)備下載完修復(fù)文件之后,應(yīng)用程序也可能出現(xiàn)異常。當(dāng)應(yīng)用程序異常時(shí),生成應(yīng)用程序的異常指令,并根據(jù)異常指令,將異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)。
s206、啟動(dòng)應(yīng)用程序。
當(dāng)下載標(biāo)識(shí)和異常標(biāo)識(shí)不同時(shí)為第一狀態(tài)、且不需要向服務(wù)器請(qǐng)求下載修復(fù)文件時(shí),則終端設(shè)備直接啟動(dòng)應(yīng)用程序。
本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法,當(dāng)需要在終端設(shè)備中啟動(dòng)應(yīng)用程序時(shí),終端設(shè)備獲取應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài),若下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài)指示,終端設(shè)備上一次下載應(yīng)用程序的修復(fù)文件的過(guò)程中應(yīng)用出現(xiàn)了異常時(shí),終端設(shè)備則先下載修復(fù)文件,并在修復(fù)文件下載完成之后,再啟動(dòng)應(yīng)用程序,進(jìn)而避免終端設(shè)備下載完成修復(fù)文件之前,應(yīng)用程序出現(xiàn)異常,進(jìn)而提高應(yīng)用程序修復(fù)的可靠性。
在圖2所示實(shí)施例的基礎(chǔ)上,在終端設(shè)備下載修復(fù)文件的過(guò)程中,修復(fù)文件可能被惡意篡改,進(jìn)而對(duì)終端設(shè)備帶來(lái)安全隱患。在本申請(qǐng)中,為了保證在終端設(shè)備下載的修復(fù)文件的安全性,服務(wù)器可以對(duì)其存儲(chǔ)的修復(fù)文件進(jìn)行安全性處理。
可選的,在應(yīng)用程序研發(fā)階段,可以生成一對(duì)預(yù)設(shè)公鑰和預(yù)設(shè)私鑰,將預(yù)設(shè)公鑰寫入應(yīng)用程序中,將預(yù)設(shè)私鑰存儲(chǔ)在服務(wù)器中。在應(yīng)用程序維護(hù)人員在服務(wù)器中上傳修復(fù)代碼之后,服務(wù)器先通過(guò)第五版消息摘要算法(messagedigestalgorithm,簡(jiǎn)稱md5)對(duì)修復(fù)代碼進(jìn)行加密,得到md5信息,并通過(guò)預(yù)設(shè)私鑰對(duì)md5信息進(jìn)行rsa加密,得到驗(yàn)證信息。服務(wù)器可以將包括修復(fù)代碼和驗(yàn)證信息的修復(fù)文件發(fā)送至終端設(shè)備。當(dāng)然,在服務(wù)器向終端設(shè)備發(fā)送修復(fù)文件時(shí),還可以通過(guò)終端設(shè)備和服務(wù)器公知的密碼對(duì)修復(fù)文件進(jìn)行加密壓縮。
相應(yīng)的,在終端設(shè)備接收到修復(fù)文件之后,終端設(shè)備通過(guò)預(yù)設(shè)公鑰對(duì)應(yīng)簽名信息進(jìn)行解密,得到第一md5信息,預(yù)設(shè)公鑰與預(yù)設(shè)私鑰為非對(duì)稱密碼,終端設(shè)備對(duì)修復(fù)文件中的修復(fù)代碼進(jìn)行md5加密,得到第二md5信息;終端設(shè)備判斷第一md5信息和第二md5信息是否相同,若是,則說(shuō)明修復(fù)代碼在傳輸過(guò)程中未被修改,則確定修復(fù)文件中的修復(fù)代碼正確,否則,說(shuō)明修復(fù)代碼在傳輸過(guò)程中被修改。
在上述過(guò)程中,在接收到修復(fù)文件之后,通過(guò)對(duì)修復(fù)文件中的修復(fù)代碼進(jìn)行驗(yàn)證,可以確保對(duì)應(yīng)用程序修復(fù)的安全性。
下面,結(jié)合圖3,以終端設(shè)備兩次啟動(dòng)應(yīng)用程序1的過(guò)程為例,對(duì)上述方法實(shí)施例所示的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
圖3為本發(fā)明實(shí)施例提供的應(yīng)用程序修復(fù)方法的流程示意圖二。請(qǐng)參見(jiàn)圖3,該方法可以包括:
s301、在終端設(shè)備獲取得到應(yīng)用程序1的啟動(dòng)指令1之后,終端設(shè)備獲取應(yīng)用程序1的下載標(biāo)識(shí)的狀態(tài)為false(第二狀態(tài))、異常標(biāo)識(shí)的狀態(tài)為false(第二狀態(tài))。
s302、終端設(shè)備向服務(wù)器發(fā)送修復(fù)文件標(biāo)識(shí)獲取請(qǐng)求。
s303、服務(wù)器向終端設(shè)備設(shè)備發(fā)送服務(wù)器中的最新修復(fù)文件的標(biāo)識(shí)(v2)。
s304、終端設(shè)備判斷服務(wù)器中的最新修復(fù)文件的標(biāo)識(shí)(v2)與本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)(v1)不同,終端設(shè)備創(chuàng)建線程1和線程2。
s305、終端設(shè)備通過(guò)線程1向服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求。
s306、終端設(shè)備將下載標(biāo)識(shí)的狀態(tài)修改為true(第一狀態(tài))。
s307、終端設(shè)備通過(guò)線程2啟動(dòng)應(yīng)用程序。
需要說(shuō)明的是,s305和s307同時(shí)執(zhí)行。
還需要說(shuō)明的是,在s301之后,可以立刻創(chuàng)建線程2,通過(guò)線程2啟動(dòng)應(yīng)用程序,并在終端設(shè)備確定需要下載修復(fù)文件時(shí),再創(chuàng)建線程1,通過(guò)線程1下載修復(fù)文件。在創(chuàng)建完成線程1和線程2之后,線程1和線程2同時(shí)執(zhí)行。
s308、在終端設(shè)備下載修復(fù)文件的過(guò)程中,應(yīng)用程序出現(xiàn)異常,則將異常標(biāo)識(shí)的狀態(tài)設(shè)置為true(第一狀態(tài)),并退出應(yīng)用程序1。
假設(shè)在退出應(yīng)用程序之后,用戶再次再終端設(shè)備中啟動(dòng)應(yīng)用程序1,具體的,請(qǐng)參見(jiàn)s309-s313。
s309、在終端設(shè)備獲取得到應(yīng)用程序1的啟動(dòng)指令2之后,終端設(shè)備獲取應(yīng)用程序1的下載標(biāo)識(shí)的狀態(tài)的true(第一狀態(tài))、異常標(biāo)識(shí)的狀態(tài)為true(第一狀態(tài))。
s310、終端設(shè)備向服務(wù)器發(fā)送修復(fù)文件下載請(qǐng)求。
s311、服務(wù)器向終端設(shè)備發(fā)送最新版本(v2)的修復(fù)文件。
s312、終端設(shè)備下載完修復(fù)文件之后,將下載標(biāo)識(shí)的狀態(tài)設(shè)置為false,將異常標(biāo)識(shí)的狀態(tài)設(shè)置為false。
s313、終端設(shè)備根據(jù)最新版本(v2)的修復(fù)文件啟動(dòng)應(yīng)用程序1。
在上述過(guò)程中,在終端設(shè)備第一次啟動(dòng)應(yīng)用程序1時(shí),由于下載標(biāo)識(shí)和異常標(biāo)識(shí)的狀態(tài)均為false,因此,終端設(shè)備同時(shí)啟動(dòng)應(yīng)用程序1和下載修復(fù)文件,在開(kāi)始下載修復(fù)文件時(shí),將下載標(biāo)識(shí)的狀態(tài)設(shè)置為了true。在下載修復(fù)文件的過(guò)程中,應(yīng)用程序1出現(xiàn)異常,則將異常標(biāo)識(shí)的狀態(tài)設(shè)置為了true。
在終端設(shè)備第二次啟動(dòng)應(yīng)用程序1時(shí),由于下載標(biāo)識(shí)和異常標(biāo)識(shí)的狀態(tài)均為true,則終端設(shè)備先下載修復(fù)文件,并在修復(fù)文件下載完成之后,再根據(jù)修復(fù)文件啟動(dòng)應(yīng)用程序1,這樣,可以保證應(yīng)用程序1正常啟動(dòng)。
圖4為本發(fā)明實(shí)施例提供的終端設(shè)備的結(jié)構(gòu)示意圖一。請(qǐng)參見(jiàn)圖4,該終端設(shè)備可以包括獲取模塊11、判斷模塊12、下載模塊13、啟動(dòng)模塊14,其中,
所述獲取模塊11用于,在獲取得到應(yīng)用程序的啟動(dòng)指令之后,獲取所述應(yīng)用程序的下載標(biāo)識(shí)的狀態(tài)和異常標(biāo)識(shí)的狀態(tài);
所述判斷模塊12用于,判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)是否均為第一狀態(tài),所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)為所述第一狀態(tài)用于指示在終端設(shè)備上一次下載所述應(yīng)用程序的修復(fù)文件的過(guò)程中,所述應(yīng)用出現(xiàn)了異常;
所述下載模塊13用于,在所述判斷模塊12判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)均為第一狀態(tài)時(shí),向服務(wù)器請(qǐng)求下載修復(fù)文件;相應(yīng)的,所述啟動(dòng)模塊14用于,在所述下載模塊下載完成所述修復(fù)文件之后,根據(jù)所述修復(fù)文件啟動(dòng)所述應(yīng)用程序;
在所述判斷模塊12判斷所述下載標(biāo)識(shí)和所述異常標(biāo)識(shí)不同時(shí)為第一狀態(tài)時(shí),所述判斷模塊12還用于,判斷是否需要向所述服務(wù)器請(qǐng)求下載修復(fù)文件,在所述判斷模塊12判斷需要向所述服務(wù)器請(qǐng)求下載修復(fù)文件時(shí),在所述下載模塊13向服務(wù)器請(qǐng)求下載修復(fù)文件的同時(shí),所述啟動(dòng)模塊14啟動(dòng)所述應(yīng)用程序。
本發(fā)明實(shí)施例提供的終端設(shè)備可以執(zhí)行上述方法實(shí)施例所示的技術(shù)方案,其實(shí)現(xiàn)原理以及有益效果類似,此處不再進(jìn)行贅述。
圖5為本發(fā)明實(shí)施例提供的終端設(shè)備的結(jié)構(gòu)示意圖二。在圖4所示實(shí)施例的基礎(chǔ)上,請(qǐng)參見(jiàn)圖5,所述終端設(shè)備還包括設(shè)置模塊15,其中,
所述設(shè)置模塊15用于,在所述下載模塊13下載完成所述修復(fù)文件之后,將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài),將所述異常標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在一種可能的實(shí)施方式中,所述判斷模塊12具體用于:
向所述服務(wù)器請(qǐng)求獲取所述服務(wù)器中存儲(chǔ)的最新修復(fù)文件的標(biāo)識(shí);
根據(jù)所述終端設(shè)備本地存儲(chǔ)的修復(fù)文件的標(biāo)識(shí)、和所述最新修復(fù)文件的標(biāo)識(shí),判斷是否需要向所述服務(wù)器請(qǐng)求獲取所述修復(fù)文件。
在另一種可能的實(shí)施方式中,所述終端設(shè)備還包括創(chuàng)建模塊16,其中,
所述創(chuàng)建模塊16用于,創(chuàng)建第一線程和第二線程,所述第一線程和所述第二線程為異步線程;
相應(yīng)的,所述下載模塊13具體用于,通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求,并接收所述服務(wù)器發(fā)送的所述修復(fù)文件;
所述啟動(dòng)模塊14具體用于,通過(guò)所述第二線程啟動(dòng)所述應(yīng)用程序。
在另一種可能的實(shí)施方式中,所述獲取模塊11還用于,在所述下載模塊在通過(guò)所述第一線程向所述服務(wù)器發(fā)送修復(fù)文件獲取請(qǐng)求之后,獲取所述下載標(biāo)識(shí)的狀態(tài);
所述設(shè)置模塊15還用于,在所述下載標(biāo)識(shí)的狀態(tài)為第二狀態(tài)時(shí),將所述下載標(biāo)識(shí)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,所述終端設(shè)備還包括生成模塊17,其中,
所述生成模塊17用于,在所述下載模塊下載完所述修復(fù)文件之后,生成所述修復(fù)文件的下載完成指令;
所述設(shè)置模塊15還用于,根據(jù)所述下載完成指令,將所述下載標(biāo)識(shí)設(shè)置為第二狀態(tài)。
在另一種可能的實(shí)施方式中,所述生成模塊17還用于,在所述啟動(dòng)模塊14啟動(dòng)所述應(yīng)用程序之后,在所述應(yīng)用程序異常時(shí),生成所述應(yīng)用程序的異常指令;
所述設(shè)置模塊15還用于,根據(jù)所述異常指令,將所述異常標(biāo)識(shí)的狀態(tài)設(shè)置為第一狀態(tài)。
在另一種可能的實(shí)施方式中,所述修復(fù)文件中包括修復(fù)代碼和驗(yàn)證信息,所述驗(yàn)證信息為所述服務(wù)器對(duì)所述服務(wù)器中的修復(fù)代碼進(jìn)行md5加密、及通過(guò)預(yù)設(shè)私鑰進(jìn)行rsa加密得到的信息;所述終端設(shè)備還包括驗(yàn)證模塊18,其中,在所述下載模塊13下載完成所述修復(fù)文件之后,所述驗(yàn)證模塊18用于:
通過(guò)預(yù)設(shè)公鑰對(duì)應(yīng)所述簽名信息進(jìn)行解密,得到第一md5信息,所述預(yù)設(shè)公鑰與所述預(yù)設(shè)私鑰為非對(duì)稱密碼;
對(duì)所述修復(fù)文件中的修復(fù)代碼進(jìn)行md5加密,得到第二md5信息;
若所述第一md5信息和所述第二md5信息相同,則確定所述修復(fù)文件中的修復(fù)代碼正確。
本發(fā)明實(shí)施例提供的終端設(shè)備可以執(zhí)行上述方法實(shí)施例所示的技術(shù)方案,其實(shí)現(xiàn)原理以及有益效果類似,此處不再進(jìn)行贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例方案的范圍。