麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

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

文檔序號:11199018閱讀:808來源:國知局
本申請涉及系統軟件技術,具體涉及一種對支撐層軟件功能的訪問方法及裝置。本申請同時涉及一種對支撐層軟件功能的升級方法及裝置,以及一種對支撐層動態升級程序的管理方法及裝置。
背景技術
::運行在移動設備上的系統軟件升級通常采用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
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 霸州市| 买车| 五华县| 交口县| 瑞昌市| 泽普县| 句容市| 二连浩特市| 罗山县| 正安县| 霞浦县| 富川| 苗栗县| 潜山县| 德令哈市| 谷城县| 定边县| 徐汇区| 沙洋县| 老河口市| 宣恩县| 河北区| 北票市| 娱乐| 桓仁| 图木舒克市| 鄄城县| 东阳市| 平度市| 岳西县| 乐东| 莒南县| 宜黄县| 茶陵县| 金寨县| 汾阳市| 平凉市| 平舆县| 峨边| 阳新县| 武定县|