本申請涉及系統(tǒng)軟件技術(shù),具體涉及一種對支撐層軟件功能的訪問方法及裝置。本申請同時涉及一種對支撐層軟件功能的升級方法及裝置,以及一種對支撐層動態(tài)升級程序的管理方法及裝置。
背景技術(shù):
::運(yùn)行在移動設(shè)備上的系統(tǒng)軟件升級通常采用ota(over-the-air)在線更新的方式,采用這種方式,移動設(shè)備軟件開發(fā)方通常需要維護(hù)版本變更歷史,為移動設(shè)備制作各個版本之間的全量和增量升級包并推送給使用移動設(shè)備的用戶。其中,增量升級包要求軟件開發(fā)方維護(hù)所有版本間的差異,并為各個版本提供差分升級包,然而由于移動設(shè)備上的系統(tǒng)軟件發(fā)展變化迅速,用戶在使用一段時間后,系統(tǒng)軟件已經(jīng)發(fā)布多個版本,通常難以匹配到最新版本和當(dāng)前版本的差分包,只能更新全量包升級。因此獲取全量升級包進(jìn)行系統(tǒng)軟件升級成為一種比較普遍采用的方式。移動設(shè)備的系統(tǒng)軟件通常采用分層的結(jié)構(gòu),其中通常包括為應(yīng)用程序提供服務(wù)的支撐層軟件,支撐層軟件由于承擔(dān)了為應(yīng)用程序構(gòu)建運(yùn)行環(huán)境,提供系統(tǒng)服務(wù)的重要職責(zé),具有較強(qiáng)的升級需求。以移動操作系統(tǒng)android或者yunos為例,為應(yīng)用程序提供服務(wù)的支撐層通常是指框架層(framework),框架層包含開發(fā)應(yīng)用程序所需的一系列組件,每個組件都可以實(shí)現(xiàn)一組功能(例如:與撥打電話相關(guān)的功能等)、并對外提供相應(yīng)的功能接口(即api)。應(yīng)用程序需要實(shí)現(xiàn)某一功能時可以根據(jù)需求訪問框架層提供的功能接口,框架層則根據(jù)接收到的請求,執(zhí)行當(dāng)前已安裝的框架層功能接口的實(shí)現(xiàn)代碼?;谏鲜鰧χ螌庸δ芙涌诘某R?guī)訪問方式,為了使應(yīng)用程序能夠訪問到升級后的支撐層軟件功能,通常需要下載系統(tǒng)軟件的全量升級包進(jìn)行安裝。在實(shí)際應(yīng)用中存在以下情況:1)全量升級包的體積通常較大,在幾百兆到幾gb字節(jié)之間,經(jīng)常出現(xiàn)因?yàn)橐苿釉O(shè)備存儲空間不足導(dǎo)致下載更新失敗的情況;2)不同移動設(shè)備軟件開發(fā)方對框架層軟件的修改存在較大差異,例如:功能接口數(shù)量、以及內(nèi)部實(shí)現(xiàn)都可能不同,因此難以使用統(tǒng)一的系統(tǒng)軟件更新版本對不同或者相同廠家的不同產(chǎn)品系列的支撐層軟件功能進(jìn)行升級。由此可見,由于傳統(tǒng)ota方式存在上述問題,支撐層軟件功能通常無法得到及時地升級,應(yīng)用程序自然無法及時訪問到升級后的支撐層軟件功能,導(dǎo)致應(yīng)用程序能夠?qū)崿F(xiàn)的功能受到限制,影響用戶的使用體驗(yàn)。技術(shù)實(shí)現(xiàn)要素:本申請實(shí)施例提供一種對支撐層軟件功能的訪問方法和裝置,以解決ota升級方式下,應(yīng)用程序無法及時訪問到升級后的支撐層軟件功能,導(dǎo)致應(yīng)用程序?qū)崿F(xiàn)功能受限的問題。本申請實(shí)施例還提供一種對支撐層軟件功能的升級方法和裝置,以及一種對支撐層動態(tài)升級程序的管理方法和裝置。本申請?zhí)峁┮环N對支撐層軟件功能的訪問方法,包括:接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求;執(zhí)行對應(yīng)于所述功能接口的升級代碼;其中,包含所述升級代碼的動態(tài)升級程序通過進(jìn)程合并機(jī)制被預(yù)先注入到支撐層服務(wù)進(jìn)程中,并且所述功能接口的功能實(shí)現(xiàn)代碼被設(shè)置為所述升級代碼??蛇x的,所述方法還包括:將所述升級代碼的執(zhí)行結(jié)果返回給所述應(yīng)用程序??蛇x的,所述支撐層包括:框架層;所述支撐層功能接口包括:所述框架層中的組件提供的功能接口。可選的,包含所述升級代碼的動態(tài)升級程序通過進(jìn)程合并機(jī)制被注入到支撐層服務(wù)進(jìn)程中,包括:在所述動態(tài)升級程序的配置文件中,指定運(yùn)行所述動態(tài)升級程序的進(jìn)程名稱與所述支撐層服務(wù)進(jìn)程一致;運(yùn)行所述動態(tài)升級程序,以將其注入到所述支撐層服務(wù)進(jìn)程中??蛇x的,所述功能接口的功能實(shí)現(xiàn)代碼被設(shè)置為所述升級代碼,是采用hook方式實(shí)現(xiàn)的??蛇x的,在執(zhí)行對應(yīng)于所述功能接口的升級代碼的過程中,還包括:調(diào)用 在所述支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序提供的功能擴(kuò)展接口??蛇x的,對所述功能擴(kuò)展接口的調(diào)用操作,是通過進(jìn)程間通信機(jī)制實(shí)現(xiàn)的。可選的,所述動態(tài)升級程序,是在宿主系統(tǒng)中安裝從服務(wù)端獲取的、用于升級支撐層軟件功能的動態(tài)升級軟件包后生成的可執(zhí)行程序??蛇x的,在執(zhí)行對應(yīng)于所述功能接口的升級代碼的過程中,還包括:調(diào)用在所述支撐層服務(wù)進(jìn)程之外動態(tài)加載運(yùn)行的功能擴(kuò)展程序提供的功能擴(kuò)展接口;所述功能擴(kuò)展程序,是在宿主系統(tǒng)中安裝功能擴(kuò)展軟件包后生成的可執(zhí)行程序,所述功能擴(kuò)展軟件包是從所述服務(wù)端獲取所述動態(tài)升級軟件包時一并獲取的。相應(yīng)的,本申請還提供一種對支撐層軟件功能的訪問裝置,包括:訪問請求接收單元,用于接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求;升級代碼執(zhí)行單元,用于執(zhí)行對應(yīng)于所述功能接口的升級代碼,其中,包含所述升級代碼的動態(tài)升級程序通過進(jìn)程合并機(jī)制被預(yù)先注入到支撐層服務(wù)進(jìn)程中,并且所述功能接口的功能實(shí)現(xiàn)代碼被設(shè)置為所述升級代碼。可選的,所述裝置還包括:執(zhí)行結(jié)果返回單元,用于將所述升級代碼執(zhí)行單元的執(zhí)行結(jié)果返回給所述應(yīng)用程序??蛇x的,所述升級代碼執(zhí)行單元,具體用于執(zhí)行對應(yīng)于所述功能接口的升級代碼,并在執(zhí)行所述升級代碼的過程中調(diào)用在支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序提供的功能擴(kuò)展接口??蛇x的,所述升級代碼執(zhí)行單元,具體用于通過進(jìn)程間通信機(jī)制實(shí)現(xiàn)對所述功能擴(kuò)展接口的調(diào)用。此外,本申請還提供一種對支撐層軟件功能的升級方法,包括:運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中;將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼。可選的,所述支撐層包括:框架層??蛇x的,所述運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將 所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,采用如下方式實(shí)現(xiàn):在所述動態(tài)升級程序的配置文件中,預(yù)先指定運(yùn)行所述動態(tài)升級程序的進(jìn)程名稱與所述支撐層服務(wù)進(jìn)程一致;運(yùn)行所述動態(tài)升級程序,以將其注入到所述支撐層服務(wù)進(jìn)程中??蛇x的,將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼的步驟,采用hook方式實(shí)現(xiàn)??蛇x的,所述方法由所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段觸發(fā)執(zhí)行??蛇x的,所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段通過如下方式觸發(fā)本方法執(zhí)行:所述動態(tài)升級程序預(yù)先向系統(tǒng)注冊以下需求:接收系統(tǒng)初始化階段的預(yù)設(shè)消息;所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段廣播所述預(yù)設(shè)消息,并根據(jù)所述動態(tài)升級程序預(yù)先注冊的所述需求、觸發(fā)本方法執(zhí)行??蛇x的,所述系統(tǒng)初始化階段的預(yù)設(shè)消息包括:開機(jī)完成消息。可選的,所述方法還包括:啟動在所述支撐層服務(wù)進(jìn)程之外運(yùn)行的、為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序??蛇x的,在觸發(fā)本方法執(zhí)行之前,包括:向服務(wù)端發(fā)送軟件包獲取請求,請求獲取用于升級支撐層軟件功能的軟件包;根據(jù)服務(wù)端提供的信息獲取軟件包,其中至少包括動態(tài)升級軟件包;通過安裝已獲取的軟件包,生成至少包括所述動態(tài)升級程序的可執(zhí)行程序??蛇x的,在所述根據(jù)服務(wù)端提供的信息獲取軟件包的步驟中,獲取的不僅包括所述動態(tài)升級軟件包,還包括功能擴(kuò)展軟件包;所述通過安裝已獲取的安裝包生成的可執(zhí)行程序,不僅包括所述動態(tài)升級程序,還包括為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。相應(yīng)的,本申請還提供一種對支撐層軟件功能的升級裝置,包括:升級代碼注入單元,用于運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中;升級代碼替換單元,用于將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼??蛇x的,所述升級代碼注入單元具體用于,在所述動態(tài)升級程序的配置文件中,預(yù)先指定運(yùn)行所述動態(tài)升級程序的進(jìn)程名稱與支撐層服務(wù)進(jìn)程一致;運(yùn)行所述動態(tài)升級程序,以將其注入到所述支撐層服務(wù)進(jìn)程中。可選的,所述升級代碼替換單元,具體用于采用hook方式實(shí)現(xiàn)將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼。可選的,所述裝置包括:觸發(fā)工作單元,用于所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段觸發(fā)所述升級代碼注入單元工作。可選的,所述觸發(fā)工作單元包括:接收消息注冊子單元,用于所述動態(tài)升級程序預(yù)先向系統(tǒng)注冊以下需求:接收系統(tǒng)初始化階段的預(yù)設(shè)消息;消息廣播子單元,用于所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段廣播所述預(yù)設(shè)消息,并根據(jù)所述動態(tài)升級程序預(yù)先注冊的所述需求、觸發(fā)所述升級代碼注入單元工作??蛇x的,所述裝置還包括:功能擴(kuò)展程序啟動單元,用于啟動在所述支撐層服務(wù)進(jìn)程之外運(yùn)行的、為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序??蛇x的,所述裝置還包括可執(zhí)行程序生成單元;所述單元包括:軟件包請求子單元,用于向服務(wù)端發(fā)送軟件包獲取請求,請求獲取用于升級支撐層軟件功能的軟件包;軟件包獲取子單元,用于根據(jù)服務(wù)端提供的信息獲取軟件包,其中至少包括動態(tài)升級軟件包;軟件包安裝子單元,用于通過安裝已獲取的軟件包,生成至少包括所述動態(tài)升級程序的可執(zhí)行程序??蛇x的,所述軟件包獲取子單元,具體用于根據(jù)服務(wù)端提供的信息獲取動態(tài)升級軟件包和功能擴(kuò)展軟件包;所述軟件包安裝子單元,具體用于通過安裝已獲取的軟件包,生成所述動 態(tài)升級程序和功能擴(kuò)展程序。此外,本申請還提供一種對支撐層動態(tài)升級程序的管理方法,包括:判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容;若不兼容,則卸載所述動態(tài)升級程序??蛇x的,所述判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容,包括:判斷用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作是否返回表征操作成功的結(jié)果,若否,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容,包括:根據(jù)所述動態(tài)升級程序的歷史啟動信息,判斷由于用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作、導(dǎo)致系統(tǒng)重啟的狀況是否滿足預(yù)設(shè)條件,若滿足,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述預(yù)設(shè)條件,包括:重啟次數(shù)大于預(yù)設(shè)閾值??蛇x的,在所述判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容之后,在卸載所述動態(tài)升級程序之前,包括:取消執(zhí)行所述動態(tài)替換操作。可選的,所述卸載所述動態(tài)升級程序,包括:提示用戶所述動態(tài)升級程序與宿主系統(tǒng)不兼容;并根據(jù)用戶的指令卸載所述動態(tài)升級程序??蛇x的,所述動態(tài)升級程序,是在宿主系統(tǒng)中安裝從服務(wù)端獲取的動態(tài)升級軟件包后生成的可執(zhí)行程序;當(dāng)所述判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容的結(jié)果為不兼容時,還包括:收集并生成所述動態(tài)升級程序與宿主系統(tǒng)不兼容的相關(guān)日志信息,并將所述日志信息上傳到所述服務(wù)端??蛇x的,當(dāng)所述判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容的結(jié)果為不兼容時,還包括:卸載為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。相應(yīng)的,本申請還提供一種對支撐層動態(tài)升級程序的管理裝置,包括:兼容性判斷單元,用于判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容;動態(tài)升級程序卸載單元,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,卸載所述動態(tài)升級程序??蛇x的,所述兼容性判斷單元,具體用于判斷用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作是否返回表征操作成功的結(jié)果,若否,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述兼容性判斷單元,具體用于根據(jù)所述動態(tài)升級程序的歷史啟動信息,判斷由于用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作、導(dǎo)致系統(tǒng)重啟的狀況是否滿足預(yù)設(shè)條件,若滿足,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述動態(tài)升級程序卸載單元,包括:卸載提示子單元,用于提示用戶所述動態(tài)升級程序與宿主系統(tǒng)不兼容;卸載執(zhí)行子單元,用于根據(jù)用戶的指令卸載所述動態(tài)升級程序??蛇x的,所述裝置還包括:不兼容信息上傳單元,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,收集并生成所述動態(tài)升級程序與宿主系統(tǒng)不兼容的相關(guān)日志信息,并將所述日志信息上傳到服務(wù)端;所述服務(wù)端是提供對應(yīng)于所述動態(tài)升級程序的動態(tài)升級軟件包的服務(wù)端??蛇x的,所述裝置還包括:功能擴(kuò)展程序卸載單元,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,卸載為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):本申請?zhí)峁┑膶χ螌榆浖δ艿脑L問方法,在接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求后,執(zhí)行對應(yīng)于所述功能接口的升級代碼,其中,包含所述升級代碼的動態(tài)升級程序通過進(jìn)程合并機(jī)制被預(yù)先注入到支撐層服務(wù)進(jìn)程中,并且所述功能接口的功能實(shí)現(xiàn)代碼被設(shè)置為所述升級代碼。采用上述方法,在接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求后,沒有按照常規(guī)方式執(zhí)行所述功能接口的原實(shí)現(xiàn)代碼,而是執(zhí)行利用進(jìn)程合并機(jī)制注入的升級代碼,即,在沒有采用傳統(tǒng)ota方式進(jìn)行系統(tǒng)軟件升級的情況下,應(yīng)用程序依然可以訪問到升級后的支撐層軟件功能,從而能夠及時地為用戶提供更為完善的功能,也可以相應(yīng)提升用戶的使用體驗(yàn)。附圖說明圖1是本申請的一種對支撐層軟件功能的升級方法的實(shí)施例的流程圖;圖2是本申請的一種對支撐層軟件功能的升級裝置的實(shí)施例的示意圖;圖3是本申請的一種對支撐層軟件功能的訪問方法的實(shí)施例的流程圖;圖4是本申請實(shí)施例提供的支撐層服務(wù)進(jìn)程接收應(yīng)用程序訪問請求后的處理過程示意圖;圖5是本申請的一種對支撐層軟件功能的訪問裝置的實(shí)施例的示意圖;圖6是本申請的一種對支撐層動態(tài)升級程序的管理方法的實(shí)施例的流程圖;圖7是本申請的一種對支撐層動態(tài)升級程序的管理裝置的實(shí)施例的示意圖。具體實(shí)施方式在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實(shí)施的限制。在本申請中,分別提供了一種對支撐層軟件功的訪問方法及裝置,一種對支撐層軟件功能的升級方法及裝置,以及一種對支撐層動態(tài)升級程序的管理方法及裝置。在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說明。為了便于理解,首先描述本申請?zhí)峁┑囊环N對支撐層軟件功能的升級方法的實(shí)施例。在描述本實(shí)施例的具體步驟之前,先對本技術(shù)方案以及動態(tài)升級程序的生成過程做簡要的說明。本技術(shù)方案的核心在于:通過進(jìn)程合并機(jī)制,將包含升級代碼的動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,并在此基礎(chǔ)上將支撐層相應(yīng)功能接口的功能實(shí) 現(xiàn)代碼設(shè)置為所述升級代碼,從而實(shí)現(xiàn)了對支撐層軟件功能的輕量、動態(tài)升級方式,應(yīng)用程序則可以訪問升級后的支撐層軟件功能。與采用傳統(tǒng)ota方式對系統(tǒng)軟件升級相比較,本方法只需要通過進(jìn)程合并、以及將相應(yīng)功能接口的功能實(shí)現(xiàn)代碼設(shè)置為升級代碼,即可實(shí)現(xiàn)升級代碼的動態(tài)加載,實(shí)現(xiàn)對支撐層軟件功能的升級,從而在ota實(shí)施困難的情況下,提供了一種快捷的、輕量級的支撐層軟件功能升級方法。本實(shí)施例所述的支撐層,通常是指在系統(tǒng)軟件分層架構(gòu)中為應(yīng)用程序提供服務(wù)的軟件層,其中包含一系列庫、函數(shù)或者組件的集合,并且通過對外提供功能接口的方式對應(yīng)用程序提供服務(wù)。應(yīng)用程序需要實(shí)現(xiàn)某一系統(tǒng)功能時,可以訪問支撐層提供的相應(yīng)功能接口。以移動操作系統(tǒng)android或者yunos為例,為應(yīng)用程序提供服務(wù)的支撐層可以是框架層(framework),支撐層功能接口可以是框架層中的組件提供的功能接口。為了實(shí)現(xiàn)對支撐層軟件功能的升級,在具體實(shí)施中,可以先從服務(wù)端獲取動態(tài)升級軟件包、并通過安裝生成可執(zhí)行的動態(tài)升級程序。具體實(shí)現(xiàn)可以是:向服務(wù)端發(fā)送軟件包獲取請求,請求獲取用于升級支撐層軟件功能的軟件包;根據(jù)服務(wù)端提供的信息獲取動態(tài)升級軟件包;通過安裝已獲取的軟件包生成可執(zhí)行的動態(tài)升級程序。其中,所述服務(wù)端可以為云端。以在android操作系統(tǒng)中實(shí)施為例,服務(wù)端可以針對框架層待升級的功能接口生成相應(yīng)的升級代碼,并制作動態(tài)升級軟件包,通常是后綴為apk的軟件包;實(shí)施本方法的移動設(shè)備(例如:智能手機(jī))可以按照一定的策略,例如定期,向服務(wù)端發(fā)送獲取用于升級框架層軟件功能的軟件包的請求,所述請求中可以攜帶終端類型、原有軟件包版本號等信息;服務(wù)端收到請求后,查詢與終端信息匹配的、可供移動設(shè)備升級安裝的動態(tài)升級軟件包,并提示移動設(shè)備從相應(yīng)的網(wǎng)站下載;移動設(shè)備根據(jù)服務(wù)端提供的信息下載并安裝動態(tài)升級軟件包,這樣就生成了可執(zhí)行的動態(tài)升級程序,該程序中包含了用于實(shí)現(xiàn)框架層某個或者某些功能接口的升級功能的升級代碼。優(yōu)選地,還可以從服務(wù)端獲取功能擴(kuò)展軟件包、并安裝生成為動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。為了實(shí)現(xiàn)本技術(shù)方案,需要將動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,而支撐層服務(wù)進(jìn)程在操作系統(tǒng)中通常起著維護(hù)應(yīng)用程序執(zhí)行環(huán)境的作用,為了保證支撐層服務(wù)進(jìn)程的穩(wěn)定運(yùn)行,動態(tài)升級程序中可以僅包含需要執(zhí)行動態(tài)替換的升級代碼的最小集合,而將無需運(yùn)行在支 撐層服務(wù)進(jìn)程中的功能交由在支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序?qū)崿F(xiàn),而動態(tài)升級程序提供的升級代碼,則可以通過調(diào)用功能擴(kuò)展程序提供的功能擴(kuò)展接口、使用其提供的擴(kuò)展服務(wù),既可以實(shí)現(xiàn)所需功能,同時也最大限度地保證了支撐層的穩(wěn)定運(yùn)行。基于上述考慮,宿主設(shè)備在上述獲取動態(tài)升級軟件包的同時,可以一并獲取功能擴(kuò)展軟件包,并且通過安裝獲取的軟件包,生成動態(tài)升級程序、以及為動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。至此,對本技術(shù)方案以及動態(tài)升級程序(和功能擴(kuò)展程序)的生成過程進(jìn)行了說明。在具體實(shí)施時,對于首次安裝并生成動態(tài)升級程序的情況,可以隨后執(zhí)行以下提供的實(shí)施例中的步驟101與102,對于更新安裝的情況,則可以提示用戶重新啟動系統(tǒng),并在系統(tǒng)初始化過程中執(zhí)行所述步驟101與102,從而實(shí)現(xiàn)支撐層軟件功能的升級。下面以在系統(tǒng)初始化階段實(shí)施本方法為例,對本申請?zhí)峁┑囊环N對支撐層軟件功能的升級方法的實(shí)施例進(jìn)行詳細(xì)描述。參考圖1,其為本申請的一種對支撐層軟件功能的升級方法的實(shí)施例的流程圖,所述方法包括如下步驟:步驟101、運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中。在具體實(shí)施時,通常可以在實(shí)施本方法的系統(tǒng)(以下簡稱宿主系統(tǒng))初始化的過程中實(shí)施本方法,例如可以由支撐層服務(wù)進(jìn)程在初始化階段觸發(fā)本方法執(zhí)行,從而可以在宿主系統(tǒng)的初始化階段,就完成支撐層軟件功能的動態(tài)升級,應(yīng)用程序隨后發(fā)起的對支撐層功能接口的訪問請求,就可以訪問到升級后的實(shí)現(xiàn)代碼。下面以在采用android系統(tǒng)的移動設(shè)備上實(shí)施為例進(jìn)行說明。動態(tài)升級程序可以通過訪問配置文件等方式預(yù)先向系統(tǒng)注冊以下需求:接收系統(tǒng)初始化階段的預(yù)設(shè)消息;在移動設(shè)備啟動后,android系統(tǒng)執(zhí)行標(biāo)準(zhǔn)開機(jī)流程,依次啟動引導(dǎo)程序(bootloader),內(nèi)核及框架層服務(wù)進(jìn)程,框架層服務(wù)進(jìn)程在初始化階段可以廣播所述預(yù)設(shè)消息,由于動態(tài)升級程序已經(jīng)預(yù)先注冊了接收所述預(yù)設(shè)消息的需求,因此框架層服務(wù)進(jìn)程就會觸發(fā)本方法的執(zhí)行,運(yùn)行動態(tài)升級程序,從而動態(tài)升級程序就可以接收到所述預(yù)設(shè)消息。這里所述預(yù)設(shè)消息通常是指框架層服務(wù)進(jìn)程在系統(tǒng)啟動階段廣播的消息,例如可以是開機(jī)完成消息,也可以是其他消息。本方法被觸發(fā)執(zhí)行后,首先執(zhí)行本步驟:運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中。所述進(jìn)程合并機(jī)制是指,將多個獨(dú)立的程序或者應(yīng)用組件按照配置規(guī)則運(yùn)行在同一操作系統(tǒng)進(jìn)程的任務(wù)調(diào)度機(jī)制。目前,主流移動操作系統(tǒng)通??梢詫Τ绦蚧蛘邞?yīng)用組件的進(jìn)程名稱進(jìn)行指定,從而可以讓不同的程序或者應(yīng)用組件運(yùn)行在同一個進(jìn)程中。以android移動操作系統(tǒng)為例,可以在配置文件(通常為androidmanifest.xml文件,也稱為描述文件)中對程序或者應(yīng)用組件運(yùn)行的進(jìn)程名稱進(jìn)行指定。為了便于理解,下面列舉兩個獨(dú)立的系統(tǒng)組件的配置文件片段:系統(tǒng)組件1的配置文件片段:系統(tǒng)組件2的配置文件片段:其中,com.android.comp1和com.android.comp2為兩個獨(dú)立的系統(tǒng)組件,指定的進(jìn)程名稱相同,均為com.android.merged,那么在運(yùn)行這兩個系統(tǒng)組件時,系統(tǒng)會查找名稱為com.android.merged的進(jìn)程(如果沒有則創(chuàng)建所述名稱的進(jìn)程),并把這兩個系統(tǒng)組件都運(yùn)行在該進(jìn)程中。基于上述原理,可以預(yù)先在所述動態(tài)升級程序的配置文件中,指定運(yùn)行所述動態(tài)升級程序的進(jìn)程名稱與支撐層服務(wù)進(jìn)程一致,那么在運(yùn)行所述動態(tài)升級程序時,就可以通過進(jìn)程合并機(jī)制,使得動態(tài)升級程序與支撐層服務(wù)進(jìn)程運(yùn)行在同一個進(jìn)程空間中,即:將包含升級代碼的動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,為后續(xù)步驟102進(jìn)行動態(tài)替換做好準(zhǔn)備。需要說明的是,為了避免上述進(jìn)程合并機(jī)制被濫用,有的移動操作系統(tǒng)通常會為進(jìn)程合并機(jī)制的實(shí)施設(shè)置一些約束條件,因此在具體實(shí)施時,除了在配 置文件中指定與支撐層服務(wù)進(jìn)程相同的進(jìn)程名稱外,還可以執(zhí)行額外的操作滿足移動操作系統(tǒng)的約束條件,例如:動態(tài)升級程序與支撐層的數(shù)字簽名一致,為動態(tài)升級程序指定的操作系統(tǒng)用戶標(biāo)識符(id)與支撐層相同等。本步驟通過進(jìn)程合并機(jī)制、將包含升級代碼的動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,不僅為后續(xù)執(zhí)行動態(tài)替換操作做好準(zhǔn)備,而且不會打破移動操作系統(tǒng)原有的完整性,能夠?yàn)檎麄€系統(tǒng)的安全運(yùn)行提供有力保障。步驟102、將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼。執(zhí)行步驟101后,包含升級代碼的動態(tài)升級程序已經(jīng)被注入到支撐層服務(wù)進(jìn)程中,本步驟則將支撐層相應(yīng)功能接口的功能實(shí)現(xiàn)代碼設(shè)置為已注入的相應(yīng)升級代碼。所述動態(tài)升級程序中通常包含支撐層中待升級的若干個功能接口的升級代碼,所述升級代碼是對相應(yīng)功能接口所實(shí)現(xiàn)功能進(jìn)行升級的實(shí)現(xiàn)代碼,通常是可執(zhí)行代碼,也可以稱為目標(biāo)代碼。對于支撐層某個待升級功能接口來說,將其功能實(shí)現(xiàn)代碼設(shè)置為動態(tài)升級程序中的相應(yīng)升級代碼后,當(dāng)應(yīng)用程序發(fā)起對該功能接口的訪問請求后,支撐層就會執(zhí)行升級代碼,從而應(yīng)用程序就可以訪問到升級后的支撐層軟件功能,即:實(shí)現(xiàn)了對支撐層軟件功能的重新定義。將支撐層功能接口的功能實(shí)現(xiàn)代碼設(shè)置為升級代碼,從技術(shù)實(shí)現(xiàn)的角度可以采用代碼替換或者重定向兩種方式,在本實(shí)施例以及后續(xù)實(shí)施例中,將采用代碼替換方式或者重定向方式、將功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)升級代碼的過程統(tǒng)稱為動態(tài)替換。下面分別對這兩種方式進(jìn)行說明。(一)代碼替換,即:將待升級功能接口的原實(shí)現(xiàn)代碼直接替換為相應(yīng)的升級代碼。例如,原來實(shí)現(xiàn)所述功能接口的代碼為a,動態(tài)升級程序中包含的相應(yīng)升級代碼為a′,那么本步驟可以用a′替換a,此后若接收到應(yīng)用程序?qū)λ龉δ芙涌诘脑L問,實(shí)際執(zhí)行的則是a′。(二)重定向,即:不執(zhí)行代碼替換操作,而是將對待升級功能接口的訪問重定向到相應(yīng)的升級代碼。例如,可以修改用于存儲所述功能接口的功能實(shí)現(xiàn)代碼首地址的指針值,使得該指針指向動態(tài)升級程序中的相應(yīng)升級代碼,從而若接收到應(yīng)用程序?qū)λ龉δ芙涌诘脑L問,將根據(jù)該指針的指向執(zhí)行相應(yīng)的升級代碼。在具體實(shí)施時,上述重定向技術(shù)可以采用不同的方式實(shí)現(xiàn),在本實(shí)施例中采用hook方式實(shí)現(xiàn),以在android系統(tǒng)中實(shí)施為例,可以采用基于java層面的hook方式,利用虛擬機(jī)的特性以及java的反射機(jī)制實(shí)現(xiàn)重定向,也可以采用基于原生層面(native)的hook方式,通過解析elf(executableandlinkableformat—可執(zhí)行連接格式)文件實(shí)現(xiàn)重定向。需要說明的是,本步驟的操作可以由支撐層服務(wù)進(jìn)程執(zhí)行,也可以由動態(tài)升級程序完成。在第二種情況下,動態(tài)升級程序不僅包含升級代碼,還包含執(zhí)行動態(tài)替換功能的代碼,以在系統(tǒng)初始化階段實(shí)施本方法為例,支撐層服務(wù)進(jìn)程運(yùn)行動態(tài)升級程序,并將動態(tài)升級程序合并運(yùn)行到支撐層服務(wù)進(jìn)程中,動態(tài)升級程序在接收到其預(yù)先注冊的預(yù)設(shè)消息后,就可以執(zhí)行動態(tài)替換操作:查找在動態(tài)升級程序中包含哪些功能接口的升級代碼,并針對這些功能接口逐一進(jìn)行動態(tài)替換,將功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼。至此,通過上述步驟101-102,對本實(shí)施例提供的對支撐層軟件功能的升級方法的實(shí)施方式進(jìn)行了詳細(xì)描述。需要說明的是,如果動態(tài)升級程序包含的升級代碼在執(zhí)行時需要訪問功能擴(kuò)展程序提供的功能擴(kuò)展服務(wù),并且在觸發(fā)實(shí)施本方法之前已經(jīng)安裝生成了功能擴(kuò)展程序,那么還可以啟動在支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序,例如:在不同于支撐層服務(wù)進(jìn)程的獨(dú)立進(jìn)程中啟動所述功能擴(kuò)展程序。在具體實(shí)施時,啟動功能擴(kuò)展程序的時機(jī)是比較靈活的,只要能夠?yàn)閯討B(tài)升級程序提供功能擴(kuò)展服務(wù)就都是可以的。例如:功能擴(kuò)展程序也可以預(yù)先注冊需要接收到初始化階段的預(yù)設(shè)消息,那么支撐層服務(wù)進(jìn)程可以在初始化階段啟動功能擴(kuò)展程序;或者在動態(tài)升級程序包含的升級代碼需要訪問功能擴(kuò)展服務(wù)的情況下,通過ipc(inter-processcommunication—進(jìn)程間通信機(jī)制)調(diào)用啟動功能擴(kuò)展程序;或者功能擴(kuò)展程序按照定時器、網(wǎng)絡(luò)狀態(tài)變化等觸發(fā)條件自行啟動運(yùn)行也是可以的。綜上所述,本實(shí)施例提供的對支撐層軟件功能的升級方法,沒有采用傳統(tǒng)ota方式對支撐層軟件功能進(jìn)行升級,而是將支撐層的待升級功能接口的升級代碼包含在動態(tài)升級程序中,然后通過進(jìn)程合并機(jī)制將升級代碼注入到支撐層服務(wù)進(jìn)程中、并通過動態(tài)替換實(shí)現(xiàn)了支撐層軟件功能的升級,在ota實(shí)施困難的情況下,提供了一種輕量級的支撐層軟件功能升級方法,從而能夠及時、快 捷地升級支撐層軟件功能,滿足應(yīng)用程序的訪問需求。在上述的實(shí)施例中,提供了一種對支撐層軟件功能的升級方法,與之相對應(yīng)的,本申請還提供一種對支撐層軟件功能的升級裝置。請參看圖2,其為本申請的一種對支撐層軟件功能的升級裝置的實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。本實(shí)施例的一種對支撐層軟件功能的升級裝置,包括:升級代碼注入單元201,用于運(yùn)行包含升級代碼的動態(tài)升級程序,并通過進(jìn)程合并機(jī)制將所述動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中;升級代碼替換單元202,用于將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼??蛇x的,所述升級代碼注入單元具體用于,在所述動態(tài)升級程序的配置文件中,預(yù)先指定運(yùn)行所述動態(tài)升級程序的進(jìn)程名稱與支撐層服務(wù)進(jìn)程一致;運(yùn)行所述動態(tài)升級程序,以將其注入到所述支撐層服務(wù)進(jìn)程中??蛇x的,所述升級代碼替換單元,具體用于采用hook方式實(shí)現(xiàn)將支撐層待升級功能接口的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼??蛇x的,所述裝置包括:觸發(fā)工作單元,用于所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段觸發(fā)所述升級代碼注入單元工作??蛇x的,所述觸發(fā)工作單元包括:接收消息注冊子單元,用于所述動態(tài)升級程序預(yù)先向系統(tǒng)注冊以下需求:接收系統(tǒng)初始化階段的預(yù)設(shè)消息;消息廣播子單元,用于所述支撐層服務(wù)進(jìn)程在系統(tǒng)初始化階段廣播所述預(yù)設(shè)消息,并根據(jù)所述動態(tài)升級程序預(yù)先注冊的所述需求、觸發(fā)所述升級代碼注入單元工作??蛇x的,所述裝置還包括:功能擴(kuò)展程序啟動單元,用于啟動在所述支撐層服務(wù)進(jìn)程之外運(yùn)行的、為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。可選的,所述裝置還包括可執(zhí)行程序生成單元;所述單元包括:軟件包請求子單元,用于向服務(wù)端發(fā)送軟件包獲取請求,請求獲取用于升 級支撐層軟件功能的軟件包;軟件包獲取子單元,用于根據(jù)服務(wù)端提供的信息獲取軟件包,其中至少包括動態(tài)升級軟件包;軟件包安裝子單元,用于通過安裝已獲取的軟件包,生成至少包括所述動態(tài)升級程序的可執(zhí)行程序??蛇x的,所述軟件包獲取子單元,具體用于根據(jù)服務(wù)端提供的信息獲取動態(tài)升級軟件包和功能擴(kuò)展軟件包;所述軟件包安裝子單元,具體用于通過安裝已獲取的軟件包,生成所述動態(tài)升級程序和功能擴(kuò)展程序。此外,本申請還提供一種對支撐層軟件功能的訪問方法,在實(shí)施本方法之前,可以預(yù)先實(shí)施本申請?zhí)峁┑膶χ螌榆浖δ艿纳壏椒?,?shí)現(xiàn)對支撐層軟件功能的升級,即:通過進(jìn)程合并機(jī)制將包含升級代碼的動態(tài)升級程序注入到支撐層服務(wù)進(jìn)程中,并將相應(yīng)功能接口的功能實(shí)現(xiàn)代碼設(shè)置為所述升級代碼。其中,所述動態(tài)升級程序,是在宿主系統(tǒng)中安裝從服務(wù)端獲取的、用于升級支撐層軟件功能的動態(tài)升級軟件包后生成的可執(zhí)行程序。在完成對支撐層軟件功能的升級后,當(dāng)應(yīng)用程序訪問支撐層已升級的功能接口時,即可通過本申請?zhí)峁┑膶χ螌榆浖δ艿脑L問方法,執(zhí)行對應(yīng)于所述功能接口的升級代碼。請參考圖3,其為本申請的一種對支撐層軟件功能的訪問方法的實(shí)施例的流程圖,本方法通常在支撐層服務(wù)進(jìn)程中實(shí)施。本實(shí)施例與上述方法實(shí)施例步驟相同的部分不再贅述,下面重點(diǎn)描述不同之處。本實(shí)施例的一種對支撐層軟件功能的訪問方法包括如下步驟:步驟301、接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求。在本實(shí)施例中所述支撐層功能接口是指已被升級的支撐層功能接口,即:其功能實(shí)現(xiàn)代碼已被設(shè)置為動態(tài)升級程序包含的相應(yīng)升級代碼。當(dāng)應(yīng)用程序發(fā)起對所述功能接口的訪問請求后,本步驟就可以接收到所述訪問請求。以android系統(tǒng)為例,框架層中的每個組件都可以對外提供一個或者多個功能接口,當(dāng)應(yīng)用程序需要訪問某個組件提供的功能能力(例如:撥打電話、獲取imei號碼等)時,可以發(fā)起對相應(yīng)功能接口的訪問請求,框架層服務(wù)進(jìn)程就 可以接收到該訪問請求。步驟302、執(zhí)行對應(yīng)于所述功能接口的升級代碼。由于所述功能接口的功能實(shí)現(xiàn)代碼已經(jīng)被設(shè)置為相應(yīng)的升級代碼,因此本步驟執(zhí)行的是對應(yīng)于所述功能接口的升級代碼,從而可以為應(yīng)用程序提供升級后的支撐層軟件功能。在具體實(shí)施時,在執(zhí)行完本步驟之后還可以將所述升級代碼的執(zhí)行結(jié)果返回給所述應(yīng)用程序。優(yōu)選地,在執(zhí)行對應(yīng)于所述功能接口的升級代碼的過程中,還包括:調(diào)用在所述支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序提供的功能擴(kuò)展接口。其中,所述功能擴(kuò)展程序,是在宿主系統(tǒng)中安裝功能擴(kuò)展軟件包后生成的可執(zhí)行程序,所述功能擴(kuò)展軟件包是從所述服務(wù)端獲取所述動態(tài)升級軟件包時一并獲取的。例如,所述功能接口的升級代碼實(shí)現(xiàn)獲取移動設(shè)備imei號碼(移動設(shè)備國際識別碼)的功能,為了提供安全性保障,還需要對請求方是否具有相應(yīng)獲取權(quán)限進(jìn)行檢查,而權(quán)限檢查功能由在支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序?qū)崿F(xiàn),在這種情況下,可以在所述升級代碼中包含對功能擴(kuò)展程序提供的權(quán)限檢查接口的調(diào)用代碼,那么本步驟在執(zhí)行所述升級代碼時,就可以相應(yīng)地執(zhí)行對權(quán)限檢查接口的調(diào)用操作,并由功能擴(kuò)展程序內(nèi)部相應(yīng)的功能擴(kuò)展代碼進(jìn)行權(quán)限檢查,升級代碼則根據(jù)功能擴(kuò)展程序返回的結(jié)果決定是否可以向應(yīng)用程序提供imei號碼并進(jìn)行相應(yīng)的處理。為了便于理解,此處以圖示的方式給出一個具體的例子,請參見圖4,其為支撐層服務(wù)進(jìn)程接收應(yīng)用程序訪問請求后的處理過程示意圖,在圖4給出的實(shí)施方式中,預(yù)先采用重定向方式將功能接口1的功能實(shí)現(xiàn)代碼設(shè)置為相應(yīng)的升級代碼。其中操作1代表支撐層服務(wù)進(jìn)程接收應(yīng)用程序?qū)δ芙涌?的訪問請求,操作2代表支撐層服務(wù)進(jìn)程執(zhí)行功能接口1的升級代碼,操作3代表所述升級代碼調(diào)用功能擴(kuò)展程序提供的功能擴(kuò)展接口1實(shí)現(xiàn)所需功能。上述給出了升級代碼調(diào)用一個功能擴(kuò)展接口的例子,在具體實(shí)施時,如果功能擴(kuò)展程序提供的某一功能擴(kuò)展接口無法滿足升級代碼的需要,升級代碼還可以調(diào)用功能擴(kuò)展程序提供的其他多個功能擴(kuò)展接口,即訪問功能擴(kuò)展程序提供的多個功能實(shí)現(xiàn),也可以調(diào)用其他進(jìn)程或者組件提供的api。在具體實(shí)施時,升級代碼對功能擴(kuò)展程序提供的功能擴(kuò)展接口的調(diào)用操作,可以利用ipc機(jī)制實(shí)現(xiàn)。如果功能擴(kuò)展程序尚未啟動,則可以通過ipc調(diào)用啟 動功能擴(kuò)展程序,然后再訪問所需的功能擴(kuò)展接口。采用上述訪問功能擴(kuò)展接口的優(yōu)選實(shí)施方式,可以將一些復(fù)雜的、或者無法對運(yùn)行穩(wěn)定性做出準(zhǔn)確評估的功能交由功能擴(kuò)展程序完成,由于功能擴(kuò)展程序在支撐層服務(wù)進(jìn)程之外運(yùn)行,因此支撐層既可以使用功能擴(kuò)展程序提供的服務(wù),又可以保證其自身的穩(wěn)定運(yùn)行。至此,通過上述步驟301-302對本實(shí)施例提供的、對支撐層軟件功能的訪問方法的實(shí)施方式進(jìn)行了詳細(xì)說明。通過上述描述可以看出,采用上述方法,由于在接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求后,沒有按照常規(guī)方式執(zhí)行功能接口的原實(shí)現(xiàn)代碼,而是執(zhí)行利用進(jìn)程合并機(jī)制注入并動態(tài)替換后的升級代碼,即,在沒有采用傳統(tǒng)ota方式進(jìn)行系統(tǒng)軟件升級的情況下,應(yīng)用程序依然可以訪問到升級后的支撐層軟件功能,從而能夠及時地為用戶提供更為完善的功能,也可以相應(yīng)提升用戶的使用體驗(yàn)。在上述的實(shí)施例中,提供了一種對支撐層軟件功能的訪問方法,與之相對應(yīng)的,本申請還提供一種對支撐層軟件功能的訪問裝置。請參看圖5,其為本申請的一種對支撐層軟件功能的訪問裝置的實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。本實(shí)施例的一種對支撐層軟件功能的訪問裝置,包括:訪問請求接收單元501,用于接收應(yīng)用程序?qū)χ螌庸δ芙涌诘脑L問請求;升級代碼執(zhí)行單元502,用于執(zhí)行對應(yīng)于所述功能接口的升級代碼,其中,包含所述升級代碼的動態(tài)升級程序通過進(jìn)程合并機(jī)制被預(yù)先注入到支撐層服務(wù)進(jìn)程中,并且所述功能接口的功能實(shí)現(xiàn)代碼被設(shè)置為所述升級代碼。可選的,所述裝置還包括:執(zhí)行結(jié)果返回單元,用于將所述升級代碼執(zhí)行單元的執(zhí)行結(jié)果返回給所述應(yīng)用程序??蛇x的,所述升級代碼執(zhí)行單元,具體用于執(zhí)行對應(yīng)于所述功能接口的升級代碼,并在執(zhí)行所述升級代碼的過程中調(diào)用在支撐層服務(wù)進(jìn)程之外運(yùn)行的功能擴(kuò)展程序提供的功能擴(kuò)展接口??蛇x的,所述升級代碼執(zhí)行單元,具體用于通過進(jìn)程間通信機(jī)制實(shí)現(xiàn)對所述功能擴(kuò)展接口的調(diào)用。此外,本申請還提供一種對支撐層動態(tài)升級程序的管理方法。由于移動設(shè)備軟件版本實(shí)現(xiàn)差異較大,用于升級支撐層軟件功能的動態(tài)升級程序可能存在與宿主系統(tǒng)不兼容的問題,那么運(yùn)行動態(tài)升級程序并執(zhí)行動態(tài)替換操作后,可能導(dǎo)致宿主系統(tǒng)無法正常工作甚至無法正常啟動。針對這一問題,本申請?zhí)岢龅膶χ螌觿討B(tài)升級程序的管理方法,可以對兼容性進(jìn)行檢測、并在檢測到不兼容時卸載動態(tài)升級程序,從而對本申請?zhí)岢龅闹螌榆浖δ茌p量升級技術(shù)方案,提供了一種故障檢測及恢復(fù)機(jī)制,是對該技術(shù)方案的有益補(bǔ)充。請參考圖6,其為本申請?zhí)峁┑囊环N對支撐層動態(tài)升級程序的管理方法的實(shí)施例的流程圖。本實(shí)施例與上述方法實(shí)施例步驟相同的部分不再贅述,下面重點(diǎn)描述不同之處。本實(shí)施例的一種對支撐層動態(tài)升級程序的管理方法包括如下步驟:步驟601、判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容,若兼容,則執(zhí)行步驟603,否則,執(zhí)行步驟602。所述動態(tài)升級程序與宿主系統(tǒng)不兼容可以有不同的表現(xiàn)形式,因此判斷是否不兼容也可以采用不同的方式,本實(shí)施例列舉兩種:1)判斷用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作是否返回表征操作成功的結(jié)果,若否,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容。例如:在支撐層中不存在與升級代碼對應(yīng)的功能接口,或者,升級代碼涉及的入口參數(shù)與原始實(shí)現(xiàn)代碼涉及的入口參數(shù)不匹配,導(dǎo)致無法進(jìn)行動態(tài)替換,此時動態(tài)替換操作都會返回失敗結(jié)果,在這種情況下,雖然沒有導(dǎo)致系統(tǒng)重啟,也可以判定所述動態(tài)升級程序與宿主系統(tǒng)不匹配。2)根據(jù)所述動態(tài)升級程序的歷史啟動信息,判斷由于用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作、導(dǎo)致系統(tǒng)重啟的狀況是否滿足預(yù)設(shè)條件,若是,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容。在具體實(shí)施時,可以在動態(tài)升級程序的啟動過程中,記錄啟動次數(shù)、并將動態(tài)升級程序的啟動狀態(tài)設(shè)置為正在啟動;如果成功完成了動態(tài)替換操作,則可以設(shè)置動態(tài)升級程序的啟動狀態(tài)為啟動成功,并記錄此次啟動成功的相關(guān)信息。采用上述方式記錄的動態(tài)升級程序的歷史啟動信息,可以作為判斷動態(tài)升級程序是否與宿主系統(tǒng)兼容的依據(jù)。由于動態(tài)升級程序通常在宿主系統(tǒng)的初始化階段運(yùn)行、并執(zhí)行動態(tài)替換操作,因此可以在宿主系統(tǒng)的初始化階段、尚未執(zhí)行動態(tài)替換操作之前對兼容性做出判斷,具體實(shí)現(xiàn)可以為:從已記錄的歷史啟動信息中讀取動態(tài)升級程序上一次的啟動狀態(tài),如果所述啟動狀態(tài)為“正在啟動”,則說明由于上一次執(zhí)行動態(tài)替換操作導(dǎo)致了宿主系統(tǒng)的本次重啟。如果由于執(zhí)行動態(tài)替換操作導(dǎo)致系統(tǒng)重啟的狀況滿足預(yù)設(shè)條件,則可以判定動態(tài)升級程序與宿主系統(tǒng)不兼容。例如:如果由于執(zhí)行動態(tài)替換操作導(dǎo)致系統(tǒng)重啟的次數(shù)大于預(yù)設(shè)閾值(例如:3次),則可以判定動態(tài)升級程序與宿主系統(tǒng)不兼容。在具體實(shí)施時,在執(zhí)行上述判斷時,還可以綜合考慮上述歷史啟動信息中記錄的動態(tài)升級程序的啟動總次數(shù)、啟動成功的歷史相關(guān)信息等,并且可以設(shè)置不同的預(yù)設(shè)條件。如果判斷結(jié)果為:動態(tài)升級程序與宿主系統(tǒng)不兼容,可以取消執(zhí)行動態(tài)替換操作,保證宿主系統(tǒng)能夠正常啟動并運(yùn)行;否則,可以正常執(zhí)行動態(tài)替換操作以實(shí)現(xiàn)對支撐層軟件功能的升級。以上給出了判斷動態(tài)升級程序與宿主系統(tǒng)的兼容性的兩種方式,在具體實(shí)施也可以采用不同于上述方式的其他判斷方式。如果判定動態(tài)升級程序與宿主系統(tǒng)不兼容,則轉(zhuǎn)到步驟602執(zhí)行。步驟602、卸載所述動態(tài)升級程序。執(zhí)行到本步驟說明動態(tài)升級程序與宿主系統(tǒng)不兼容,在這種情況下,可以卸載動態(tài)升級程序。具體實(shí)現(xiàn)可以是:提示用戶所述動態(tài)升級程序與宿主系統(tǒng)不兼容,并根據(jù)用戶的指令卸載所述動態(tài)升級程序。如果宿主系統(tǒng)中安裝了為動態(tài)升級程序提供擴(kuò)展功能服務(wù)的功能擴(kuò)展程序,那么在卸載動態(tài)升級程序的同時,還可以卸載功能擴(kuò)展程序。此外,在具體實(shí)施時,如果步驟601的判定動態(tài)升級程序與宿主系統(tǒng)不兼容,還可以收集并生成記錄不兼容狀態(tài)的相關(guān)日志信息,并將所述日志信息上傳到提供動態(tài)升級軟件包(動態(tài)升級程序的安裝包)的服務(wù)端。所述日志信息可以包括:動態(tài)替換失敗原因,動態(tài)升級程序啟動次數(shù)、失敗現(xiàn)場的上下文信息等。服務(wù)端根據(jù)接收到的日志信息可以分析、定位故障原因,并在消除故障后制作新版本的動態(tài)升級軟件包并提供給移動設(shè)備,以便移動設(shè)備能夠成功升級支撐層軟件功能。步驟603、保留所述動態(tài)升級程序。執(zhí)行到本步驟說明動態(tài)升級程序與宿主系統(tǒng)兼容,因此可以保留所述動態(tài)升級程序,而不必執(zhí)行卸載操作。至此,通過步驟601-603對本實(shí)施例提供的對支撐層動態(tài)升級程序的管理方法的實(shí)施方式進(jìn)行了詳細(xì)描述。通過上述描述可以看出,所述管理方法提供了一種針對動態(tài)升級程序的故障檢測與恢復(fù)方法,在檢測到動態(tài)升級程序與宿主系統(tǒng)不兼容時,可以通過卸載動態(tài)升級程序進(jìn)行回退,保障宿主系統(tǒng)的正常運(yùn)行。在上述的實(shí)施例中,提供了一種對支撐層動態(tài)升級程序的管理方法,與之相對應(yīng)的,本申請還提供一種對支撐層動態(tài)升級程序的管理裝置。請參看圖7,其為本申請的一種對支撐層動態(tài)升級程序的管理裝置的實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。下述描述的裝置實(shí)施例僅僅是示意性的。本實(shí)施例的一種對支撐層動態(tài)升級程序的管理裝置,包括:兼容性判斷單元701,用于判斷用于升級支撐層軟件功能的動態(tài)升級程序是否與宿主系統(tǒng)兼容;動態(tài)升級程序卸載單元702,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,卸載所述動態(tài)升級程序;動態(tài)升級程序保留單元703,用于當(dāng)所述兼容性判斷單元的輸出為兼容時,保留所述動態(tài)升級程序??蛇x的,所述兼容性判斷單元,具體用于判斷用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作是否返回表征操作成功的結(jié)果,若否,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述兼容性判斷單元,具體用于根據(jù)所述動態(tài)升級程序的歷史啟動信息,判斷由于用所述動態(tài)升級程序包含的升級代碼執(zhí)行動態(tài)替換操作、導(dǎo)致系統(tǒng)重啟的狀況是否滿足預(yù)設(shè)條件,若滿足,則判定所述動態(tài)升級程序與宿主系統(tǒng)不兼容??蛇x的,所述動態(tài)升級程序卸載單元,包括:卸載提示子單元,用于提示用戶所述動態(tài)升級程序與宿主系統(tǒng)不兼容;卸載執(zhí)行子單元,用于根據(jù)用戶的指令卸載所述動態(tài)升級程序??蛇x的,所述裝置還包括:不兼容信息上傳單元,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,收 集并生成所述動態(tài)升級程序與宿主系統(tǒng)不兼容的相關(guān)日志信息,并將所述日志信息上傳到服務(wù)端;所述服務(wù)端是提供對應(yīng)于所述動態(tài)升級程序的動態(tài)升級軟件包的服務(wù)端??蛇x的,所述裝置還包括:功能擴(kuò)展程序卸載單元,用于當(dāng)所述兼容性判斷單元的輸出為不兼容時,卸載為所述動態(tài)升級程序提供功能擴(kuò)展服務(wù)的功能擴(kuò)展程序。本申請雖然以較佳實(shí)施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。1、計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。當(dāng)前第1頁12當(dāng)前第1頁12