一種動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開的動態(tài)修復(fù)應(yīng)用程序的方法,包括:客戶端接收預(yù)先配置的已修復(fù)程序段;存儲所述已修復(fù)程序段;記錄存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。相應(yīng)的,本發(fā)明還公開了動態(tài)修復(fù)應(yīng)用程序的裝置及相關(guān)系統(tǒng)。與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提高用戶體驗。
【專利說明】
一種動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,更具體而言,涉及一種動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng)。
【背景技術(shù)】
[0002]眾所周知,移動終端的運行依賴于內(nèi)置的運行系統(tǒng),鑒于移動終端的便捷性和操作簡易性,人們越來越傾向于通過移動終端進行網(wǎng)絡(luò)活動,因此,為了迎合用戶的需求,同時,增加移動終端的使用靈活性,第三方服務(wù)器基于移動終端的運行系統(tǒng)開發(fā)出多種實現(xiàn)不同功能的APP (Applicat1n,應(yīng)用程序),當(dāng)用戶想要通過移動終端進行某種活動時,可以在移動終端安裝能夠?qū)崿F(xiàn)相應(yīng)功能的APP。
[0003]具體的,以1S系統(tǒng)為例,由于APP為第三方服務(wù)器開發(fā)的第三方應(yīng)用程序,在第三方服務(wù)器開發(fā)出APP之后,需要經(jīng)過客戶端的1S系統(tǒng)的審核,當(dāng)1S系統(tǒng)審核通過后,將該APP在APP Store中發(fā)布,此時,當(dāng)用戶需要使用該APP時,才能夠從APP Store中下載。
[0004]然而,客戶端1S系統(tǒng)審核APP的時間相對較長,通常為7天左右,如果在APP發(fā)布之后發(fā)現(xiàn)某些功能存在錯誤,則需要先將APP下線,然后對APP存在的錯誤進行修復(fù),修復(fù)后需要再次審核繼而再次發(fā)布,該過程需要消耗很長的時間,導(dǎo)致APP的成本消耗大,崩潰率上升,嚴(yán)重影響用戶體驗。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實施例提供了一種動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng),能夠解決APP發(fā)布后修復(fù)錯誤所造成的消耗時間長,從而導(dǎo)致APP的成本消耗大,崩潰率上升的問題。
[0006]第一方面,本發(fā)明實施例提供了一種動態(tài)修復(fù)應(yīng)用程序的方法,包括:客戶端接收預(yù)先配置的已修復(fù)程序段;存儲所述已修復(fù)程序段;記錄存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
[0007]在第一方面的第一種可能的實現(xiàn)方式中,將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,包括:在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點;在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。
[0008]結(jié)合上述第一方面,在第二種可能的實現(xiàn)方式中,將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,包括:從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,其中,所述待修復(fù)程序段是所述已修復(fù)程序段修復(fù)之前的程序段;在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址,以使用所述已修復(fù)程序段的地址替換所述待修復(fù)程序段的地址。
[0009]結(jié)合上述第一方面,在第三種可能的實現(xiàn)方式中,所述在所述APP中創(chuàng)建所述已修復(fù)程序段的地址的存儲節(jié)點包括:讀取所述已修復(fù)程序段的標(biāo)識信息;根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;為所述功能模塊的地址對應(yīng)的存儲節(jié)點添加子存儲節(jié)點,并將所述子存儲節(jié)點作為所述已修復(fù)程序段的地址的存儲節(jié)點。
[0010]結(jié)合上述第一方面,在第四種可能的實現(xiàn)方式中,所述從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點包括:讀取所述已修復(fù)程序段的標(biāo)識信息;根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;以所述功能模塊的地址對應(yīng)的存儲節(jié)點為根存儲節(jié)點,從子存儲節(jié)點中查找所述待修復(fù)程序的地址對應(yīng)的存儲節(jié)點。
[0011]結(jié)合上述第一方面,在第五種可能的實現(xiàn)方式中,所述從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點包括:讀取所述已修復(fù)程序段的標(biāo)識信息;根據(jù)所述標(biāo)識信息查找所述已修復(fù)程序段所屬的功能模塊;從所述功能模塊中確定所述待修復(fù)程序段;為所述待修復(fù)程序段添加存儲地址;將所添加的所述待修復(fù)程序段的存儲地址對應(yīng)的存儲節(jié)點確定為所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。
[0012]第二方面,本發(fā)明實施例還提供了一種動態(tài)修復(fù)應(yīng)用程序的方法,包括:服務(wù)器接收運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號;當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段;將所述已修復(fù)程序段發(fā)送到客戶端,由所述客戶端存儲所述已修復(fù)程序段;獲取存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到所述APP中,以便于所述APP運行時,所述客戶端通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
[0013]在第二方面的第一種可能實現(xiàn)方式中,所述對應(yīng)所述APP配置已修復(fù)程序段包括:順次從版本號大于所述當(dāng)前版本號的APP中獲取與所述APP不同的程序段;按照屬性值為所述程序段添加標(biāo)識信息;將添加有所述標(biāo)識信息的程序段確定為所述已修復(fù)程序段。
[0014]第三方面,本發(fā)明實施例提供了一種動態(tài)修復(fù)應(yīng)用程序的裝置,包括:接收模塊,用于接收預(yù)先配置的已修復(fù)程序段;存儲模塊,用于存儲所述接收模塊所接收的已修復(fù)程序段;記錄模塊,用于記錄所述存儲模塊存儲所述已修復(fù)程序段的地址;所述存儲模塊,還用于將所述記錄模塊記錄的已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
[0015]在第三方面的第一種可能實現(xiàn)方式中,所述存儲模塊包括:創(chuàng)建單元和寫入單元,其中,所述創(chuàng)建單元,用于在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點;所述寫入單元,用于在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。
[0016]結(jié)合上述第三方面,在第二種可能的實現(xiàn)方式中,所述存儲模塊還包括:讀取單元,其中,所述讀取單元,用于從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,其中,所述待修復(fù)程序段是所述已修復(fù)程序段修復(fù)之前的程序段;所述寫入單元,還用于在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址,以使用所述已修復(fù)程序段的地址替換所述待修復(fù)程序段的地址。
[0017]結(jié)合上述第三方面,在第三種可能的實現(xiàn)方式中,所述創(chuàng)建單元包括:第一讀取子單元、第一查找子單元、第一確定子單元和第一添加子單元,其中,所述第一讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息;所述第一查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;所述第一確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;所述第一添加子單元,用于為所述功能模塊的地址對應(yīng)的存儲節(jié)點添加子存儲節(jié)點,并將所述子存儲節(jié)點作為所述已修復(fù)程序段的地址的存儲節(jié)點。
[0018]結(jié)合上述第三方面,在第四種可能的實現(xiàn)方式中,所述讀取單元包括:第二讀取子單元、第二查找子單元和第二確定子單元,其中,所述第二讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息;所述第二查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;所述第二確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;所述第二查找子單元,還用于以所述功能模塊的地址對應(yīng)的存儲節(jié)點為根存儲節(jié)點,從子存儲節(jié)點中查找所述待修復(fù)程序的地址對應(yīng)的存儲節(jié)點。
[0019]結(jié)合上述第三方面,在第五種可能的實現(xiàn)方式中,所述讀取單元包括:第二添加子單元,其中,所述第二查找子單元,還用于根據(jù)所述標(biāo)識信息查找所述已修復(fù)程序段所屬的功能模塊;所述第二確定子單元,還用于從所述功能模塊中確定所述待修復(fù)程序段;所述第二添加子單元,用于為所述待修復(fù)程序段添加存儲地址;所述第二確定子單元,還用于將所添加的所述待修復(fù)程序段的存儲地址對應(yīng)的存儲節(jié)點確定為所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。
[0020]第四方面,本發(fā)明實施例還提供了一種動態(tài)修復(fù)應(yīng)用程序的裝置,包括:接收模塊,用于接收運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號;配置模塊,用于當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段;發(fā)送模塊,用于將所述已修復(fù)程序段發(fā)送到客戶端。
[0021]在第四方面的第一種可能實現(xiàn)方式中,所述配置模塊包括:獲取單元、添加單元和確定單元,其中,所述獲取單元,用于順次從版本號大于所述當(dāng)前版本號的APP中獲取與所述APP不同的程序段;所述添加單元,用于按照屬性值為所述程序段添加標(biāo)識信息;所述確定單元,用于將添加有所述標(biāo)識信息的程序段確定為所述已修復(fù)程序段。
[0022]第五方面,本發(fā)明實施例提供了一種動態(tài)修復(fù)應(yīng)用程序的系統(tǒng),包括:服務(wù)器和客戶端,其中,所述服務(wù)器,用于收客戶端發(fā)送的運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號;當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段;將所述已修復(fù)程序段發(fā)送到所述客戶端;所述客戶端,用于接收服務(wù)器預(yù)先配置的已修復(fù)程序段;存儲所述已修復(fù)程序段;記錄存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,以便于所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
[0023]由以上技術(shù)方案可知,本發(fā)明實施例所提供的動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng),在APP需要修復(fù)時,客戶端接收服務(wù)器預(yù)先配置的已修復(fù)程序段,在存儲所述已修復(fù)程序段之后,記錄所述已修復(fù)程序段的地址,并將已修復(fù)程序段的地址存儲到APP中,從而在APP運行過程中,通過已修復(fù)程序段的地址查找到已修復(fù)程序段,并執(zhí)行已修復(fù)程序段。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提高用戶體驗。
【附圖說明】
[0024]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。通過附圖所示,本發(fā)明的上述及其它目的、特征和優(yōu)勢將更加清晰。在全部附圖中相同的附圖標(biāo)記指示相同的部分。并未刻意按實際尺寸等比例縮放繪制附圖,重點在于示出本發(fā)明的主旨。
[0025]圖1為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序方法的方法流程圖;
[0026]圖2為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法的第二種實施方式的方法流程圖;
[0027]圖3為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法的第三種實施例方式的方法流程圖;
[0028]圖4為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法的第四種實施例方式的方法流程圖;
[0029]圖5為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的裝置的結(jié)構(gòu)示意圖;
[0030]圖6為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的裝置第二種實施方式的結(jié)構(gòu)示意圖;
[0031]圖7為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0032]需要指出的是,1S系統(tǒng)的開發(fā)語言為Objective-C語言(本發(fā)明實施例中簡稱為OC語言),因此,基于1S系統(tǒng)運行的APP均使用OC語言開發(fā)。其中,使用OC語言開發(fā)的程序在執(zhí)行時,通過調(diào)用不同的方法實現(xiàn)不同的功能,而不同的方法屬于不同的類,所以,在APP運行過程中需要調(diào)用某一方法時,首先確定該方法所屬的類,然后,從類中查找并調(diào)用該方法?;贠C語言的語法,類和方法對應(yīng)的實現(xiàn)程序段均存儲在移動終端的內(nèi)存中,APP中對應(yīng)記錄存儲程序段的地址,因此,APP在運行時,通過地址查找并調(diào)用相關(guān)程序段?;谏鲜鰧崿F(xiàn)過程,本發(fā)明實施例的技術(shù)方案,通過修改程序段的地址改變APP所調(diào)用的程序段,從而對APP的功能進行修復(fù)。
[0033]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0034]由于本發(fā)明實施例的技術(shù)方案中,修復(fù)APP的具體操作主要在客戶端完成,因此,為了使本領(lǐng)域技術(shù)人員準(zhǔn)確的了解本方案,下面將從客戶端的角度對本方案進行說明。
[0035]請參見圖1,圖1為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法流程圖。本實施例將從整體上介紹本發(fā)明的實現(xiàn)方法,所述方法包括以下步驟:
[0036]步驟SlOl:客戶端接收預(yù)先配置的已修復(fù)程序段。
[0037]其中,當(dāng)客戶端運行APP時,該APP可以通過客戶端向其對應(yīng)的服務(wù)器發(fā)送連接請求,其中,連接請求中包括該APP的版本號。服務(wù)器在讀取該APP的版本號之后,可以通過該APP的版本號確定該APP需要修復(fù)的程序,從而預(yù)先配置該APP對應(yīng)的已修復(fù)程序段,并發(fā)送到客戶端。需要說明的是,服務(wù)器根據(jù)APP的版本號配置已修復(fù)程序段的過程詳見下述實施例的描述,本發(fā)明實施例此處不做詳述。
[0038]由于APP的執(zhí)行過程是調(diào)用一個個方法程序段的過程,因此,本方案所述的已修復(fù)程序段可以視為程序段合集,包括至少一個程序段,并且每個程序段對應(yīng)實現(xiàn)一種方法。此外,為了能夠明確每個程序段所表示的內(nèi)容及所屬的類,服務(wù)器可以根據(jù)程序段所表示的方法的屬性值,或者方法名稱,為每個程序段添加標(biāo)識信息,用于客戶端識別已修復(fù)程序段,從而便于客戶端修復(fù)APP。
[0039]例如,當(dāng)用戶在iphone手機上運行UC瀏覽器時,當(dāng)前版本號的UC瀏覽器相對于最新版本號的UC瀏覽器缺少添加控件的功能,那么,服務(wù)器將添加控件的執(zhí)行程序作為已修復(fù)程序段發(fā)送到客戶端,由客戶端在當(dāng)前運行的UC瀏覽器的基礎(chǔ)上,將添加控件的程序段加入。
[0040]步驟S102:存儲所述已修復(fù)程序段。
[0041]其中,現(xiàn)有技術(shù)中,如果直接修改OC語言開發(fā)的程序,1S系統(tǒng)能夠檢測得知,從而不允許修改操作的執(zhí)行,導(dǎo)致無法通過直接修改OC語言來在線修復(fù)APP。為解決該問題,技術(shù)人員在開發(fā)APP時,預(yù)先在APP中設(shè)置有修復(fù)平臺,該修復(fù)平臺通過在1S系統(tǒng)中可修改的編程語言編寫,而且能夠提供調(diào)用OC語言代碼的環(huán)境。具體的,由于1S系統(tǒng)允許JavaScript代碼執(zhí)行,因此,在本發(fā)明的一個優(yōu)選示例中,修復(fù)平臺可以使用JavaScript代碼編寫。當(dāng)然也可以使用其他滿足上述條件的語言編寫,本發(fā)明實施例對此不做限制。
[0042]本實施例中,將使用JavaScript代碼編寫的修復(fù)平臺稱為JS平臺。當(dāng)JS平臺接收到已修復(fù)程序段之后,首先,將已修復(fù)程序段存儲到客戶端內(nèi)存,然后,獲取已修復(fù)程序段在內(nèi)存中的存儲地址。由此可見,為了保證JS平臺能夠識別所接收的已修復(fù)程序段,月艮務(wù)器可以直接使用JavaScript代碼編寫已修復(fù)程序段。
[0043]為了保證APP運行時能夠直接調(diào)用所存儲的已修復(fù)程序段,在JS平臺接收到已修復(fù)程序段,并根據(jù)標(biāo)識信息識別每個已修復(fù)程序段之后,將每個已修復(fù)程序段轉(zhuǎn)換為APP能識別的格式,然后再存儲到內(nèi)存中。具體的,轉(zhuǎn)換代碼格式的方法為本領(lǐng)域技術(shù)人員所熟知的技術(shù),本發(fā)明實施例此處不再贅述。
[0044]本實施例中,通過設(shè)置修復(fù)平臺,能夠在APP動態(tài)運行時,接收用于執(zhí)行的已修復(fù)程序段,從而既能夠滿足1S系統(tǒng)的規(guī)則,又能夠在APP運行時動態(tài)修復(fù)APP。
[0045]步驟S103:記錄存儲所述已修復(fù)程序段的地址。
[0046]其中,由上述描述可知,OC程序執(zhí)行時首先查找待調(diào)用方法的地址,然后根據(jù)所讀取的地址查找并執(zhí)行方法對應(yīng)的程序。因此,JS平臺將已修復(fù)程序段存儲到內(nèi)存之后,記錄存儲已修復(fù)程序段的地址,以便于將已修復(fù)程序段的地址存儲到APP的相應(yīng)位置,使APP運行過程中讀取到已修復(fù)程序段的地址。
[0047]需要說明的是,由上述描述可知,已修復(fù)程序段是程序段的合集,而本實施例所述的已修復(fù)程序段的地址具體為,已修復(fù)程序段中每個已修復(fù)程序段所對應(yīng)的存儲地址。
[0048]步驟S104:將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中。
[0049]其中,本實施例中,APP在運行時能夠調(diào)用已修復(fù)程序段,并執(zhí)行已修復(fù)程序段,則認(rèn)為已經(jīng)對APP完成修復(fù),因此,在JS平臺存儲已修復(fù)程序段之后,需要將已修復(fù)程序段的地址存儲到APP中。
[0050]根據(jù)上述描述可知,在OC語言編寫的程序中,方法從屬于一個類,在本實施例中,可以將類作為程序段所屬的功能模塊,每個功能模塊同樣對應(yīng)一個存儲地址。在APP執(zhí)行過程中,通常先讀取到功能模塊的地址,確定功能模塊的地址之后,再確定程序段的地址,因此,為了便于APP更加高效的運行,功能模塊的地址和程序段的地址在APP中可以按照從屬關(guān)系進行存儲。具體的,每個地址對應(yīng)寫在一個存儲節(jié)點,功能模塊的地址所對應(yīng)的存儲節(jié)點可以看做根存儲節(jié)點,而從屬于該功能模塊的程序段的地址所對應(yīng)的存儲節(jié)點,為該根存儲節(jié)點的子存儲節(jié)點,從而能夠清晰的反應(yīng)地址的對應(yīng)關(guān)系。因此,本實施例中,應(yīng)當(dāng)將已修復(fù)程序段的地址寫入到APP中相應(yīng)的存儲節(jié)點。
[0051]需要指出的是,1S系統(tǒng)提供有runtime機制,runtime機制是指,系統(tǒng)將把某些可以重復(fù)使用的程序或者實例打包或者重建成為“運行庫",而“運行庫”中的程序或者實例可以在運行時被連接或者被任何程序調(diào)用。因此,本方案中JS平臺讀取和調(diào)用APP的程序和地址的過程,均是通過runtime機制完成。其中,JS平臺通過runtime機制調(diào)用APP程序和地址的方法和過程,為本領(lǐng)域技術(shù)人員所熟知的技術(shù),本發(fā)明實施例此處不再贅述。
[0052]此外,由于JS平臺與APP的程序語言不同,所以能夠識別的程序格式也不相同,在JS平臺調(diào)用APP的相應(yīng)程序時,OC程序首先按照預(yù)設(shè)格式封裝JS平臺調(diào)用的程序,然后再將封裝后的程序傳遞至JS平臺。具體的,JS平臺可以通過正則表達式把所有的程序調(diào)用都改成調(diào)用一個固定的_oc()函數(shù),S卩,JS平臺所調(diào)用的程序均需要以_oc()函數(shù)的格式封裝。具體的,由于JavaScript語言具有將OC語言中的NSDict1nary與JavaScript對象自動轉(zhuǎn)換的特性,因此,當(dāng)JS平臺調(diào)用APP中的程序段時,OC程序可以將JS調(diào)用的程序封裝成一個NSDict1nary,并在NSDict1nary中將指出該程序段的類名、方法名及指針等,從而能夠保證JS平臺調(diào)用任意的OC程序。
[0053]由本實施例的描述可知,本方案通過在APP中設(shè)置修復(fù)平臺,能夠在不違背1S開發(fā)規(guī)則的情況下,接收用于執(zhí)行的已修復(fù)程序段,并依據(jù)已修復(fù)程序段動態(tài)修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間。
[0054]此外,修復(fù)APP通常是對APP執(zhí)行下述三種操作,向APP中添加程序段、從APP中刪除程序段以和修改APP中的部分程序段,而上述實施例對本方案的描述相對概括,為了使本領(lǐng)域技術(shù)人員更加清楚的理解本方案,下面基于上述三種修復(fù)操作,分別對本發(fā)明實施例的技術(shù)方案進行詳細(xì)描述。
[0055]需要說明的是,下述實施例是在上述實施例基礎(chǔ)上的展開,也是對上述實施例的補充,因此,本實施例中與上述實施例相同的步驟,詳見上述實施例的描述,本實施例不再贅述。
[0056]請參見圖2,圖2為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序方法的第二種實施方式的方法流程圖,本實施例將對添加程序段的操作過程進行描述。本實施例所述方法包括下述步驟:
[0057]步驟S201:客戶端接收預(yù)先配置的已修復(fù)程序段。
[0058]其中,基于上述實施例的描述可知,已修復(fù)程序段是方法程序段的合集,包括至少一個完整方法對應(yīng)的程序段,因此,為了明確客戶端需要對每個已修復(fù)程序段執(zhí)行的操作,服務(wù)器針對每個已修復(fù)程序段預(yù)先添加操作指令,操作指令可以通過數(shù)字或者字母表示,本發(fā)明實施例對此不做限制。客戶端在接收到已修復(fù)程序段之后,可以根據(jù)操作指令對已修復(fù)程序段的地址執(zhí)行相應(yīng)操作。例如,本實施例中,添加操作的操作指令可以設(shè)置為“ad”或者其他標(biāo)識信息,當(dāng)客戶端讀取到操作指令信息之后,根據(jù)操作指令確定下一步操作。
[0059]步驟S202:存儲所述已修復(fù)程序段。
[0060]步驟S203:記錄存儲所述已修復(fù)程序段的地址。
[0061]步驟S204:在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。
[0062]其中,根據(jù)上述描述可知,APP中的地址通過存儲節(jié)點形成從屬關(guān)系,因此,當(dāng)向APP添加程序段時,需要將已修復(fù)程序段的地址寫到其相應(yīng)的存儲節(jié)點。由于所添加程序段為新程序段,所以,APP中不存在寫入已修復(fù)程序段地址存儲節(jié)點,在將已修復(fù)程序段的地址存儲到APP之前,需要創(chuàng)建已修復(fù)程序段地址對應(yīng)的存儲節(jié)點。
[0063]由于已修復(fù)程序段從屬于某一功能模塊,所以,已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,應(yīng)當(dāng)為功能模塊的地址所對應(yīng)的存儲節(jié)點的子存儲節(jié)點,因此,客戶端可以根據(jù)已修復(fù)程序段的標(biāo)識信息查找該功能模塊的地址,并根據(jù)功能模塊的地址確定其對應(yīng)的存儲節(jié)點,然后,以該功能模塊的地址對應(yīng)的存儲節(jié)點為根節(jié)點,添加新的子存儲節(jié)點,該新的子存儲節(jié)點即為所添加的已修復(fù)程序段的地址所對應(yīng)的存儲節(jié)點。
[0064]需要說明的是,存儲節(jié)點可以為存儲位置的標(biāo)記,因此,創(chuàng)建存儲節(jié)點的過程是確定存儲位置,并在所確定的存儲位置添加標(biāo)記的過程,具體的,為本領(lǐng)域技術(shù)人員所熟知的技術(shù)手段,本發(fā)明實施例此處不再詳述。
[0065]步驟S205:在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。
[0066]基于上述步驟,在創(chuàng)建存儲節(jié)點之后,APP將所創(chuàng)建的存儲節(jié)點按照預(yù)設(shè)封裝格式進行封裝,并發(fā)送至JS平臺,JS平臺獲知存儲節(jié)點后,向APP發(fā)送在存儲節(jié)點寫入已修復(fù)程序段的地址的命令,完成對已修復(fù)程序段的地址的存儲。
[0067]由本實施例的描述可知,向APP添加程序段時,無須修改APP對應(yīng)的執(zhí)行程序,僅在APP中添加新的存儲節(jié)點即可,從而能夠避免對1S系統(tǒng)的修改,向APP動態(tài)添加已修復(fù)程序段。
[0068]上述實施例基于添加程序段的場景對本發(fā)明實施例的技術(shù)方案進行了描述,除此之外,本方案還包括修改程序段和刪除程序段的場景,下述實施例將基于修改程序段和刪除程序段的場景對本方案進行描述。
[0069]請參見圖3,圖3為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法的第三種實施例方式的方法流程圖,所述方法包括如下步驟:
[0070]步驟S301:客戶端接收預(yù)先配置的已修復(fù)程序段。
[0071 ] 其中,本實施例中,當(dāng)修改程序段時,JS平臺通過使用已修復(fù)程序段替換待修復(fù)程序段的方式,將APP所執(zhí)行的原程序段替換為新程序段,因此,客戶端所接收的已修復(fù)程序段的操作指令為“替換”指令。
[0072]此外,需要說明的是,當(dāng)刪除某個程序段時,由于待刪除程序段不存在對應(yīng)的已修復(fù)程序段,所以,可以將待刪除程序段對應(yīng)的已修復(fù)程序段視為空,服務(wù)器可以僅將待刪除程序段的標(biāo)識信息和“替換”操作指令發(fā)送到客戶端。
[0073]步驟S302:存儲所述已修復(fù)程序段。
[0074]步驟S303:記錄存儲所述已修復(fù)程序段的地址。
[0075]其中,由于待刪除程序段所對應(yīng)的已修復(fù)程序段為空,因此,不存在已修復(fù)程序段對應(yīng)的地址,該待刪除程序段的已修復(fù)程序段地址也為空,空的存儲地址可以使用“O”表不O
[0076]步驟S304:從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。
[0077]其中,在刪除程序段和替換程序段時,APP中均存儲有修復(fù)前的待修復(fù)程序段地址,因此,JS平臺在接收到已修復(fù)程序段的地址后,需要向APP發(fā)送查找待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點的命令,當(dāng)APP接收到命令后,可以根據(jù)已修復(fù)程序段的標(biāo)識信息查找到對應(yīng)的功能模塊的地址,并確定該功能模塊的地址所對應(yīng)的存儲節(jié)點。由于待修復(fù)程序段是該功能模塊的子程序段,因此,可以在所確定的存儲節(jié)點的子存儲節(jié)點中查找待修復(fù)程序段地址的存儲節(jié)點。同樣的,APP查找到待修復(fù)程序段地址的存儲節(jié)點后,按照預(yù)設(shè)封裝格式封裝后再發(fā)送至JS平臺。
[0078]需要說明的是,在OC語言程序中,大部分方法程序段通過列表的形式存儲,方法程序段在列表中通過指針指向,那么,指向方法程序段的指針為方法程序的地址。而上述在APP中查找存儲節(jié)點的方法,為基于該場景的描述。
[0079]然而,在OC語言程序中,還包括部分需直接執(zhí)行的方法程序,例如,super方法和self方法,該類程序在APP中不存在地址,因此,也不存在存儲節(jié)點。所以,當(dāng)待修復(fù)程序段為此類程序時,APP首先根據(jù)標(biāo)識信息查找相應(yīng)的功能模塊,從功能模塊對應(yīng)的程序段中查找到待修復(fù)程序段之后,為該待修復(fù)程序段添加讀取路徑,該讀取路徑即是待修復(fù)程序段的地址,而所添加的地址在APP中對應(yīng)存儲節(jié)點為待發(fā)送到JS平臺的存儲節(jié)點。
[0080]步驟S305:在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址。
[0081]其中,由上述描述可知,本實施例中,通過使用已修復(fù)程序段的地址替換待修復(fù)程序段的地址,來修復(fù)待修復(fù)程序段,因此,將已修復(fù)程序段的地址寫入APP的同時,已修復(fù)程序段的地址覆蓋待修復(fù)程序段的地址,從而使得APP執(zhí)行時,無法通過待修復(fù)程序段的地址調(diào)用到待修復(fù)程序段,完成修復(fù)。
[0082]當(dāng)對APP的修復(fù)操作是刪除程序段時,修復(fù)過程與上述過程相同,由于已修復(fù)程序段的地址為“0”,修復(fù)之后,已修復(fù)程序段的地址不指向任何程序段,從而在APP運行時,既無法調(diào)用到待修復(fù)程序段,也無法調(diào)用到其他程序段,等同于已刪除待修復(fù)程序。
[0083]由本實施例的描述可知,通過將待修復(fù)程序段的地址替換為已修復(fù)程序段的地址,能夠在不下發(fā)新程序的基礎(chǔ)上替換待修復(fù)程序段,從而能夠在APP動態(tài)運行的情況下完成對APP的修復(fù),避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提高用戶體驗。
[0084]上述實施例從客戶端的角度闡述了本方案的技術(shù)內(nèi)容,為了使本領(lǐng)域技術(shù)人員對本方案有更加全面、完整的了解,下面從服務(wù)器的角度對本方案進行描述。
[0085]請參見圖4,圖4為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的方法的第四種實施例方式的方法流程圖,所述方法包括下述步驟:
[0086]步驟S401:服務(wù)器接收運行應(yīng)用系統(tǒng)APP的連接請求。
[0087]其中,當(dāng)用戶在客戶端點擊運行APP時,APP通過客戶端向其對應(yīng)的服務(wù)器發(fā)送連接請求,該連接請求中包括待運行APP的版本號,服務(wù)器可以根據(jù)待運行APP的版本號確定待運行APP是否需要修復(fù)。
[0088]步驟S402:當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段。
[0089]其中,版本號是每一代APP的版本標(biāo)識,工程人員通過版本號能夠了解每一代APP所提供的功能,而且,每個版本的APP均是在上一版本的APP基礎(chǔ)上的改進,因此,當(dāng)服務(wù)器讀取客戶端待運行APP的版本號之后,可以通過判斷該版本號是否為最高版本號來確定待運行APP是否需要修復(fù),如果該版本號是最高版本號,則認(rèn)為客戶端當(dāng)前待運行的APP無須修復(fù),服務(wù)器可以向客戶端返回常規(guī)的運行信息;如果該版本號不是最高版本號,則客戶端當(dāng)前待運行的APP需要修復(fù),服務(wù)器針對該版本號的APP配置已修復(fù)程序段,以便于客戶端按照已修復(fù)程序段修復(fù)待運行的APP。
[0090]由于APP的開發(fā)及維護均在服務(wù)器端完成,服務(wù)器存儲有各個版本的APP對應(yīng)的程序,因此,本實施例中,服務(wù)器可以獲取版本號高于客戶端APP的版本號的所有APP程序,按照版本號從小到大的順序逐一獲取高版本號的APP與客戶端APP不同的程序段,并為每個程序段按照屬性信息添加標(biāo)識信息,得到已修復(fù)程序段。
[0091]例如,客戶端運行的UC瀏覽器版本號為5.1.0,而UC瀏覽器的最高版本號為
5.1.3,當(dāng)服務(wù)器接收客戶端運行版本號為5.1.0的UC瀏覽器的請求后,獲取版本號為
5.1.1,5.1.2和5.1.3的UC瀏覽器程序,并分別獲取版本號為5.1.1與版本號為5.1.0,版本號為5.1.2與版本號為5.1.0,以及版本號為5.1.3與版本號為5.1.0的UC瀏覽器的不同程序段,根據(jù)每個程序段的屬性值為程序段添加標(biāo)識信息,形成版本號為5.1.0的UC瀏覽器的已修復(fù)程序段。
[0092]需要說明的是,為了減少配置已修復(fù)程序段的步驟,提高配置已修復(fù)程序段的效率,工程人員每開發(fā)出新一個版本的APP時,可以將該版本的APP與上一版本的APP的區(qū)別程序段單獨存儲,以使服務(wù)器配置已修復(fù)程序段時,能夠直接獲取已修復(fù)程序段。
[0093]此外,為了便于客戶端的修復(fù)平臺識別和處理已修復(fù)程序段,服務(wù)器可以使用與修復(fù)平臺的編程語言相同的變成語言進行編寫,例如,在本實施例中,由于修復(fù)平臺使用JavaScript代碼編寫,服務(wù)器也可以使用JavaScript代碼編寫已修復(fù)程序段。
[0094]驟S403:將所述已修復(fù)程序段發(fā)送到客戶端。
[0095]其中,當(dāng)服務(wù)器配置完成已修復(fù)程序段之后,將已修復(fù)程序段發(fā)送到客戶端,由客戶端修復(fù)當(dāng)前待運行的APP,詳見上述實施例的描述,本發(fā)明實施例不再贅述。
[0096]由此可見,本發(fā)明實施例所提供的動態(tài)修復(fù)應(yīng)用程序的方法,在APP需要修復(fù)時,客戶端接收服務(wù)器預(yù)先配置的已修復(fù)程序段,在存儲所述已修復(fù)程序段之后,記錄所述已修復(fù)程序段的地址,并將已修復(fù)程序段的地址存儲到APP中,從而在APP運行過程中,通過已修復(fù)程序段的地址查找到已修復(fù)程序段,并執(zhí)行已修復(fù)程序段。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提高用戶體驗。
[0097]與上述實現(xiàn)方法相對應(yīng)的,本發(fā)明實施例還提供了一種動態(tài)修復(fù)應(yīng)用程序的裝置,請參見圖5,圖5為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的裝置的結(jié)構(gòu)示意圖,本實施例將針對客戶端的裝置結(jié)構(gòu)進行描述。
[0098]所述裝置包括:接收模塊11、存儲模塊12和記錄模塊13,其中,所述接收模塊11,用于接收預(yù)先配置的已修復(fù)程序段;所述存儲模塊12,用于存儲所述接收模塊11所接收的已修復(fù)程序段;所述記錄模塊13,用于記錄所述存儲模塊12存儲所述已修復(fù)程序段的地址;本實施例中,所述存儲模塊12,還用于將所述記錄模塊13記錄的已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
[0099]所述裝置中各個模塊的功能和作用的實現(xiàn)過程詳見上述方法中對應(yīng)的實現(xiàn)過程,在此不再贅述。
[0100]由本實施例的描述可知,本方案通過在APP中設(shè)置修復(fù)平臺,能夠在不違背1S開發(fā)規(guī)則的情況下,接收用于執(zhí)行的已修復(fù)程序段,并依據(jù)已修復(fù)程序段動態(tài)修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間。
[0101]需要說明的是,在本實施例中,存儲模塊12包括:創(chuàng)建單元和寫入單元,其中,所述創(chuàng)建單元,用于在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點;所述寫入單元,用于在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。
[0102]其中,在本實施例中,所述創(chuàng)建單元包括:第一讀取子單元、第一查找子單元、第一確定子單元和第一添加子單元,其中,所述第一讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息;所述第一查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;所述第一確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;所述第一添加子單元,用于為所述功能模塊的地址對應(yīng)的存儲節(jié)點添加子存儲節(jié)點,并將所述子存儲節(jié)點作為所述已修復(fù)程序段的地址的存儲節(jié)點。
[0103]而在另一個實施例中,所述存儲模塊還包括:讀取單元,其中,所述讀取單元,用于從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,其中,所述待修復(fù)程序段是所述已修復(fù)程序段修復(fù)之前的程序段。在本實施例中,所述寫入單元,還用于在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址,以使用所述已修復(fù)程序段的地址替換所述待修復(fù)程序段的地址。
[0104]其中,在本實施例中,所述讀取單元包括:第二讀取子單元、第二查找子單元和第二確定子單元,其中,所述第二讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息;所述第二查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址;所述第二確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點;所述第二查找子單元,還用于以所述功能模塊的地址對應(yīng)的存儲節(jié)點為根存儲節(jié)點,從子存儲節(jié)點中查找所述待修復(fù)程序的地址對應(yīng)的存儲節(jié)點。
[0105]在上述實施例的基礎(chǔ)上,在另一個實施例中,所述讀取單元包括:第二添加子單元,其中,在本實施例中,所述第二查找子單元,還用于根據(jù)所述標(biāo)識信息查找所述已修復(fù)程序段所屬的功能模塊;所述第二確定子單元,還用于從所述功能模塊中確定所述待修復(fù)程序段;所述第二添加子單元,用于為所述待修復(fù)程序段添加存儲地址;所述第二確定子單元,還用于將所添加的所述待修復(fù)程序段的存儲地址對應(yīng)的存儲節(jié)點確定為所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。
[0106]所述裝置中各個模塊和單元的功能和作用的實現(xiàn)過程詳見上述方法中對應(yīng)的實現(xiàn)過程,在此不再贅述。
[0107]由本實施例的描述可知,本發(fā)明實施例所提供的動態(tài)修復(fù)應(yīng)用程序的裝置,與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提尚用戶體驗。
[0108]上述實施例從客戶端的角度對本方案中的裝置進行了描述,為了使本領(lǐng)域技術(shù)人員對本方案有更加全面、完整的了解,下面從服務(wù)器的角度對裝置進行描述。
[0109]請參見圖6,圖6為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的裝置第二種實施方式的結(jié)構(gòu)示意圖,所述裝置包括:接收模塊21、配置模塊22和發(fā)送模塊23,其中,接收模塊21,用于接收運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號;配置模塊22,用于當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段;發(fā)送模塊23,用于將所述已修復(fù)程序段發(fā)送到客戶端。
[0110]其中,在本實施例中,配置模塊包括:獲取單元、添加單元和確定單元,其中,獲取單元,用于順次從版本號大于所述當(dāng)前版本號的APP中獲取與所述APP不同的程序段;添加單元,用于按照屬性值為所述程序段添加標(biāo)識信息;確定單元,用于將添加有所述標(biāo)識信息的程序段確定為所述已修復(fù)程序段。
[0111]所述裝置中各個模塊和單元的功能和作用的實現(xiàn)過程詳見上述方法中對應(yīng)的實現(xiàn)過程,在此不再贅述。
[0112]由此可見,本發(fā)明實施例所提供的動態(tài)修復(fù)應(yīng)用程序的裝置,在APP需要修復(fù)時,客戶端接收服務(wù)器預(yù)先配置的已修復(fù)程序段,在存儲所述已修復(fù)程序段之后,記錄所述已修復(fù)程序段的地址,并將已修復(fù)程序段的地址存儲到APP中,從而在APP運行過程中,通過已修復(fù)程序段的地址查找到已修復(fù)程序段,并執(zhí)行已修復(fù)程序段。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提高用戶體驗。
[0113]與上述實現(xiàn)方法和裝置相對應(yīng)的,本發(fā)明實施例還提供了一種動態(tài)修復(fù)應(yīng)用程序的系統(tǒng),參見圖7,圖7為本發(fā)明實施例提供的動態(tài)修復(fù)應(yīng)用程序的系統(tǒng)的結(jié)構(gòu)示意圖,所述系統(tǒng)包括:服務(wù)器I和客戶端2。其中,服務(wù)器1,用于收客戶端2發(fā)送的運行應(yīng)用系統(tǒng)APP的連接請求,其中,連接請求中包括APP的當(dāng)前版本號;當(dāng)當(dāng)前版本號小于最高版本號時,對應(yīng)APP配置已修復(fù)程序段,并將已修復(fù)程序段發(fā)送到客戶端2 ;客戶端2用于接收服務(wù)器I預(yù)先配置的已修復(fù)程序段;存儲已修復(fù)程序段;記錄存儲已修復(fù)程序段的地址;將已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,以便于APP運行時通過已修復(fù)程序段的地址調(diào)用已修復(fù)程序段。
[0114]需要說明的是,服務(wù)器I與客戶端2的具體操作過程與結(jié)構(gòu),詳見上述實施例的描述,本發(fā)明實施例此處不在贅述。
[0115]綜合上述,本發(fā)明實施例所提供的動態(tài)修復(fù)應(yīng)用程序的方法、裝置及相關(guān)系統(tǒng),在APP需要修復(fù)時,客戶端接收服務(wù)器預(yù)先配置的已修復(fù)程序段,在存儲所述已修復(fù)程序段之后,記錄所述已修復(fù)程序段的地址,并將已修復(fù)程序段的地址存儲到APP中,從而在APP運行過程中,通過已修復(fù)程序段的地址查找到已修復(fù)程序段,并執(zhí)行已修復(fù)程序段。因此,與現(xiàn)有技術(shù)相比,本發(fā)明實施例的技術(shù)方案,能夠在線上修復(fù)APP,從而能夠避免APP下線、修復(fù)、再審核所消耗的時間,進而不僅能夠降低APP的成本消耗,大大降低崩潰率,而且能夠提尚用戶體驗O
[0116]以上所述僅是本發(fā)明的【具體實施方式】,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
【主權(quán)項】
1.一種動態(tài)修復(fù)應(yīng)用程序的方法,其特征在于,包括: 客戶端接收預(yù)先配置的已修復(fù)程序段; 存儲所述已修復(fù)程序段; 記錄存儲所述已修復(fù)程序段的地址; 將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。2.如權(quán)利要求1所述的方法,其特征在于,將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,包括: 在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點; 在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。3.如權(quán)利要求1所述的方法,其特征在于,將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,包括: 從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,其中,所述待修復(fù)程序段是所述已修復(fù)程序段修復(fù)之前的程序段; 在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址,以使用所述已修復(fù)程序段的地址替換所述待修復(fù)程序段的地址。4.如權(quán)利要求2所述的方法,其特征在于,所述在所述APP中創(chuàng)建所述已修復(fù)程序段的地址的存儲節(jié)點包括: 讀取所述已修復(fù)程序段的標(biāo)識信息; 根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址; 確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點; 為所述功能模塊的地址對應(yīng)的存儲節(jié)點添加子存儲節(jié)點,并將所述子存儲節(jié)點作為所述已修復(fù)程序段的地址的存儲節(jié)點。5.如權(quán)利要求3所述的方法,其特征在于,所述從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點包括: 讀取所述已修復(fù)程序段的標(biāo)識信息; 根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址; 確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點; 以所述功能模塊的地址對應(yīng)的存儲節(jié)點為根存儲節(jié)點,從子存儲節(jié)點中查找所述待修復(fù)程序的地址對應(yīng)的存儲節(jié)點。6.如權(quán)利要求3所述的方法,其特征在于,所述從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點包括: 讀取所述已修復(fù)程序段的標(biāo)識信息; 根據(jù)所述標(biāo)識信息查找所述已修復(fù)程序段所屬的功能模塊; 從所述功能模塊中確定所述待修復(fù)程序段; 為所述待修復(fù)程序段添加存儲地址; 將所添加的所述待修復(fù)程序段的存儲地址對應(yīng)的存儲節(jié)點確定為所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。7.—種動態(tài)修復(fù)應(yīng)用程序的方法,其特征在于,包括: 服務(wù)器接收運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號; 當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段; 將所述已修復(fù)程序段發(fā)送到客戶端,由所述客戶端存儲所述已修復(fù)程序段;獲取存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到所述APP中,以便于所述APP運行時,所述客戶端通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。8.如權(quán)利要求7所述的方法,其特征在于,所述對應(yīng)所述APP配置已修復(fù)程序段包括: 順次從版本號大于所述當(dāng)前版本號的APP中獲取與所述APP不同的程序段; 按照屬性值為所述程序段添加標(biāo)識信息; 將添加有所述標(biāo)識信息的程序段確定為所述已修復(fù)程序段。9.一種動態(tài)修復(fù)應(yīng)用程序的裝置,其特征在于,包括: 接收模塊,用于接收預(yù)先配置的已修復(fù)程序段; 存儲模塊,用于存儲所述接收模塊所接收的已修復(fù)程序段; 記錄模塊,用于記錄所述存儲模塊存儲所述已修復(fù)程序段的地址; 所述存儲模塊,還用于將所述記錄模塊記錄的已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。10.如權(quán)利要求9所述的裝置,其特征在于,所述存儲模塊包括:創(chuàng)建單元和寫入單元,其中, 所述創(chuàng)建單元,用于在所述APP中創(chuàng)建所述已修復(fù)程序段的地址對應(yīng)的存儲節(jié)點; 所述寫入單元,用于在已創(chuàng)建的所述存儲節(jié)點寫入所述已修復(fù)程序段的地址。11.如權(quán)利要求9所述的裝置,其特征在于,所述存儲模塊還包括:讀取單元,其中, 所述讀取單元,用于從所述APP中讀取待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點,其中,所述待修復(fù)程序段是所述已修復(fù)程序段修復(fù)之前的程序段; 所述寫入單元,還用于在所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點寫入所述已修復(fù)程序段的地址,以使用所述已修復(fù)程序段的地址替換所述待修復(fù)程序段的地址。12.如權(quán)利要求10所述的裝置,其特征在于,所述創(chuàng)建單元包括:第一讀取子單元、第一查找子單元、第一確定子單元和第一添加子單元,其中, 所述第一讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息; 所述第一查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址; 所述第一確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點; 所述第一添加子單元,用于為所述功能模塊的地址對應(yīng)的存儲節(jié)點添加子存儲節(jié)點,并將所述子存儲節(jié)點作為所述已修復(fù)程序段的地址的存儲節(jié)點。13.如權(quán)利要求11所述的裝置,其特征在于,所述讀取單元包括:第二讀取子單元、第二查找子單元和第二確定子單元,其中, 所述第二讀取子單元,用于讀取所述已修復(fù)程序段的標(biāo)識信息; 所述第二查找子單元,用于根據(jù)所述標(biāo)識信息從所述APP中查找所述已修復(fù)程序段所屬的功能模塊的地址; 所述第二確定子單元,用于確定所述功能模塊的地址所對應(yīng)的存儲節(jié)點; 所述第二查找子單元,還用于以所述功能模塊的地址對應(yīng)的存儲節(jié)點為根存儲節(jié)點,從子存儲節(jié)點中查找所述待修復(fù)程序的地址對應(yīng)的存儲節(jié)點。14.如權(quán)利要求11所述的裝置,其特征在于,所述讀取單元包括:第二添加子單元,其中, 所述第二查找子單元,還用于根據(jù)所述標(biāo)識信息查找所述已修復(fù)程序段所屬的功能模塊; 所述第二確定子單元,還用于從所述功能模塊中確定所述待修復(fù)程序段; 所述第二添加子單元,用于為所述待修復(fù)程序段添加存儲地址; 所述第二確定子單元,還用于將所添加的所述待修復(fù)程序段的存儲地址對應(yīng)的存儲節(jié)點確定為所述待修復(fù)程序段的地址對應(yīng)的存儲節(jié)點。15.一種動態(tài)修復(fù)應(yīng)用程序的裝置,其特征在于,包括: 接收模塊,用于接收運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號; 配置模塊,用于當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段; 發(fā)送模塊,用于將所述已修復(fù)程序段發(fā)送到客戶端。16.如權(quán)利要求15所述的裝置,其特征在于,所述配置模塊包括:獲取單元、添加單元和確定單元,其中, 所述獲取單元,用于順次從版本號大于所述當(dāng)前版本號的APP中獲取與所述APP不同的程序段; 所述添加單元,用于按照屬性值為所述程序段添加標(biāo)識信息; 所述確定單元,用于將添加有所述標(biāo)識信息的程序段確定為所述已修復(fù)程序段。17.—種動態(tài)修復(fù)應(yīng)用程序的系統(tǒng),其特征在于,包括:服務(wù)器和客戶端,其中, 所述服務(wù)器,用于收客戶端發(fā)送的運行應(yīng)用系統(tǒng)APP的連接請求,其中,所述連接請求中包括所述APP的當(dāng)前版本號;當(dāng)所述當(dāng)前版本號小于最高版本號時,對應(yīng)所述APP配置已修復(fù)程序段;將所述已修復(fù)程序段發(fā)送到所述客戶端; 所述客戶端,用于接收服務(wù)器預(yù)先配置的已修復(fù)程序段;存儲所述已修復(fù)程序段;記錄存儲所述已修復(fù)程序段的地址;將所述已修復(fù)程序段的地址存儲到應(yīng)用程序APP中,以便于所述APP運行時通過所述已修復(fù)程序段的地址調(diào)用所述已修復(fù)程序段。
【文檔編號】G06F9/44GK106020786SQ201510742193
【公開日】2016年10月12日
【申請日】2015年11月2日
【發(fā)明人】張志堅, 馬妙魁
【申請人】廣州市動景計算機科技有限公司