新四季網

對支撐層軟體功能的訪問、升級方法及裝置與流程

2023-09-15 09:30:45

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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀