TW202333045A - 應用程式及軟體開發套組之獨立發佈及服務 - Google Patents

應用程式及軟體開發套組之獨立發佈及服務 Download PDF

Info

Publication number
TW202333045A
TW202333045A TW112103817A TW112103817A TW202333045A TW 202333045 A TW202333045 A TW 202333045A TW 112103817 A TW112103817 A TW 112103817A TW 112103817 A TW112103817 A TW 112103817A TW 202333045 A TW202333045 A TW 202333045A
Authority
TW
Taiwan
Prior art keywords
software development
sdk
development kit
package
application
Prior art date
Application number
TW112103817A
Other languages
English (en)
Other versions
TWI835545B (zh
Inventor
亞歷山德羅 多維斯
馬丁 大衛 丘吉爾
皮爾 卡洛斯 愛德華多 萊切斯內
阿比吉特 錢德加卡
雅菲特 貝切爾
約翰 威廉 艾瑞斯
亞科夫 格魯克
德 特蘭 伯爾賈 迪亞茲
Original Assignee
美商谷歌有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商谷歌有限責任公司 filed Critical 美商谷歌有限責任公司
Publication of TW202333045A publication Critical patent/TW202333045A/zh
Application granted granted Critical
Publication of TWI835545B publication Critical patent/TWI835545B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本發明描述一種運算裝置,其包含一或多個處理器,該一或多個處理器經組態以:接收一軟體開發套組(SDK)包裹,其中該SDK包裹包括一或多個SDK組建項;將該SDK包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一SDK套裝,其中各應用程式在運行時間期間相依於該一或多個SDK組建項之一SDK組建項,且該軟體開發套組套裝包含該一或多個軟體開發套組組建項,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。

Description

應用程式及軟體開發套組之獨立發佈及服務
軟體開發套組(SDK)開發者目前將其等之程式庫發佈為一基於平台或電腦語言之存檔。一程式庫可相依於其他程式庫(稱為遞移相依)。類似於應用程式(例如,在行動裝置上運行之應用程式),此等相依在一程式庫之組建檔案中被宣告。一旦程式庫準備好被共用,SDK開發者便將其等之程式庫分配給應用程式開發者以整合至其等之應用程式中。一單一SDK可含有一或多個程式庫。當一應用程式經套裝化時,其所相依之全部程式庫(直接的及遞移的)皆從儲存庫下載,解決衝突程式庫人工製品(artifact),且編譯程式碼並將其與應用程式條目(例如,exe檔案、本機檔案、資源、資產等)合併。
一般言之,本發明之技術係關於軟體開發套組(SDK)及在運行時間期間相依於其等之其等之(若干)各自應用程式之分開的套裝化及分配。在一個實例中,套裝化及分配由一中央運算系統執行,該中央運算系統服務於應用程式開發者、SDK開發者及將應用程式及SDK套裝下載及安裝至其等之裝置之使用者。因而,本發明之技術可利用SDK組建項(build)之版本控制及分配,實施與一SDK組建項與一相關聯應用程式之間之相互作用相關聯之策略(例如,資料存取及隱私),在無需一應用程式更新之情況下提供對SDK組建項之更新,以及其他優點。
在一個實例中,本發明描述一種方法,其包含:由一運算系統接收一軟體開發套組(SDK)包裹(bundle),其中該SDK包裹包括一或多個SDK組建項;將該SDK包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一SDK套裝,其中各應用程式在運行時間期間相依於該一或多個SDK組建項之一SDK組建項;及將包括該一或多個SDK組建項之該SDK套裝輸出至該裝置,其中各SDK組建項經組態以在該裝置上之相對於各對應應用程式之一分開的程序中運行。
在另一實例中,一種運算裝置包含:一記憶體;及一或多個處理器,其或其等可操作地耦合至該記憶體且經組態以:接收一軟體開發套組(SDK)包裹,其中該SDK包裹包括一或多個SDK組建項;將該SDK包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一SDK套裝,其中各應用程式在運行時間期間相依於該一或多個SDK組建項之一SDK組建項;及將包括該一或多個SDK組建項之該SDK套裝輸出至該裝置,其中各SDK組建項經組態以在該裝置上之相對於各對應應用程式之一分開的程序中運行。
在另一實例中,本發明描述一種方法,其包含:由一使用者運算裝置接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中該應用程式套裝中之一應用程式宣告對一SDK版本之一相依;由該使用者運算裝置判定該SDK套裝中之一SDK匹配由該應用程式宣告之該相依;由該使用者運算裝置在該使用者運算裝置上之一第一程序中運行該SDK;由該使用者運算裝置在該使用者運算裝置上之一第二程序中運行該應用程式,該使用者運算裝置上之該第二程序相異於該使用者運算裝置上之該第一程序,其中該使用者運算裝置上之該第一程序中之該SDK被限制存取該使用者運算裝置上之該第二程序中之該應用程式之資料,且該應用程式使用該SDK在該使用者運算裝置上之一第一程序中之功能性。
在另一實例中,一種運算裝置包括構件,其用於:接收一軟體開發套組包裹,其中該軟體開發套組包裹包含一或多個軟體開發套組組建項;將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中來自安裝在該裝置上之該一或多個應用程式之各應用程式在運行時間期間相依於來自該一或多個軟體開發套組組建項之至少一個軟體開發套組組建項;及由該運算裝置提供包含該一或多個軟體開發套組組建項之該軟體開發套組套裝且將其提供至該裝置(例如,使用者運算系統),其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
在隨附圖式及以下描述中陳述本發明之一或多個實例之細節。從描述及圖式且從發明申請專利範圍將明白其他特徵、目標及優點。
貫穿本發明,描述其中一運算系統經組態用於分開地套裝化及分配可包含一或多個程式庫及相依於其等之其等之(若干)各自應用程式之軟體開發套組(SDK)之實例。當交付至裝置時,應用程式及SDK組建項通常係不可分離的(例如,包裹至一可執行檔案中)。由於其等被包裹在一起,所以SDK與應用程式具有相同資料存取,從而產生一安全及隱私顧慮。SDK與裝置/用戶端應用程式之分離不僅隔離SDK,而且亦使SDK能夠獨立於應用程式發佈及更新生命週期進行更新。
分離及SDK策略藉由相對於應用程式隔離地運行(諸如藉由在一「SDK沙盒」中運行)而為一SDK在裝置上之資料存取提供控制。SDK沙盒包含在一分開的程序中運行之SDK,因此在應用程式與SDK之間產生清晰邊界,且限制SDK之資料存取、分開的內容脈絡及無許可。平台可卸載及管理SDK,控制裝置上之SDK生命週期(包含更新及停用),且為個別SDK提供一中斷開關(kill switch)。平台可防止一裝置之使用者卸載SDK。
圖1係繪示根據本發明之一或多個態樣之一實例SDK及應用程式發佈系統100之一方塊圖。應用程式發佈系統100包含運算系統102、應用程式開發者運算裝置112、SDK開發者運算裝置114及使用者運算裝置120。在一些實例中,運算系統102可包含固定運算裝置,諸如桌上型電腦、伺服器、主機等,且可透過一或多個網路(諸如網路140及網路145)與遠端運算系統(諸如應用程式開發者運算裝置112及SDK開發者運算裝置114)通信。
如圖1中展示,運算系統102包含處理器104、UI組件106及儲存裝置108。儲存裝置108包含分配模組110、應用程式套裝117及SDK套裝119。在一個實例中,應用程式開發者運算裝置112及SDK開發者運算裝置114可透過網路140將應用程式包裹116及SDK包裹118分別上傳至運算系統102。在一個實例中,運算系統102可使用處理器104及分配模組110接收應用程式包裹116及SDK包裹118且將其等套裝化成應用程式套裝117及SDK套裝119。分配模組110可產生包含應用程式套裝117及SDK套裝119之一者或兩者之安裝套裝122。運算系統102可透過網路145將軟體套裝提供至使用者運算裝置120。安裝套裝122包含一或多個SDK組建項且可包含一應用程式組建項,各可安裝在使用者運算裝置120上。
在一個實例中,使用者運算裝置120從安裝套裝122安裝包含一或多個SDK組建項及應用程式128 (各在使用者運算裝置120上之一分開的程序中運行)之SDK 126 。應用程式128在運行時間期間相依於一或多個SDK組建項之一SDK組建項。在另一實例中,應用程式128駐留在使用者運算裝置120上,且安裝套裝122包含對SDK 126之一更新,且包含與應用程式128相容之一SDK組建項之一較新版本。
在一個實例中,網路140及網路145係相同網路,在其他實例中,其等係使用相同或不同通信協定之不同網路。網路140及網路145可包含可操作地相互耦合之網路集線器、網路交換器、網路路由器等,藉此提供運算系統102、應用程式開發者運算裝置112、SDK開發者運算裝置114及使用者運算裝置120之間之資訊交換。在一些實例中,與網路140及網路145相關聯之通信鏈路可為無線及/或有線連接、乙太網路、異步傳送模式(ATM)或其他網路連接。
圖2A係繪示根據本發明之一或多個態樣之用於產生用於分配給使用者裝置之軟體套裝之實例運算系統202之一方塊圖。圖2A繪示如圖1中繪示之運算系統102之一個實例。運算系統202可包含固定運算裝置,諸如桌上型電腦、伺服器、主機等,且可透過一或多個網路(例如,網路140及網路145)與遠端運算系統(例如,應用程式開發者運算裝置112及SDK開發者運算裝置114)通信。運算系統202之許多其他實例可在其他例項中使用,且可包含實例運算系統202中所包含之組件之一子集,或可包含圖2A中未展示之額外組件。
如圖2A之實例中展示,運算系統202包含處理器204、一或多個輸入/輸出組件(諸如使用者介面組件(UIC) 206)、一或多個通信單元207及一或多個儲存裝置208。運算系統202之儲存裝置208可包含分配模組210及作業系統223,且UIC 206可包含I/O (輸入/輸出)裝置233。分配模組210可包含應用程式套裝模組225、SDK套裝模組215及軟體套裝模組227。例如,運算系統202之一或多個通信單元207可藉由在運算系統202處傳輸及/或接收資料來與外部裝置通信,諸如將資料傳輸至SDK套裝模組215及軟體套裝模組227及遠端電腦系統(諸如圖1之應用程式開發者運算裝置112、SDK開發者運算裝置114及使用者運算裝置120)及從其等接收資料。例如,運算系統202可透過通信單元207分別從應用程式開發者運算裝置112及SDK開發者運算裝置114接收應用程式包裹116及SDK包裹118。應用程式套裝模組225產生一應用程式套裝(例如,應用程式套裝117),且SDK套裝模組227產生包含一或多個SDK組建項之一SDK套裝(例如,SDK套裝119)。
在一個實例中,軟體套裝模組227將應用程式套裝及SDK套裝組合成一軟體套裝以發送至一裝置,諸如使用者運算裝置120。在另一實例中,軟體套裝模組227在相同或分開的傳輸中將應用程式套裝及SDK套裝以分開的套裝(例如,檔案)發送至使用者運算裝置120。
在另一實例中,為了支援反向相容性,軟體套裝模組227可藉由將SDK套裝(例如,SDK套裝119)合併至應用程式套裝(例如,應用程式套裝117)中來產生安裝套裝122以分配給不支援SDK與應用程式之運行時分離之使用者裝置。
實例通信單元207包含一網路介面卡(例如,諸如一乙太網路卡)、一光學收發器、一射頻收發器或可發送及/或接收資訊之任何其他類型之裝置。通信單元207之其他實例可為可在運算裝置(諸如行動裝置及類似物)中找到之經組態以傳輸及接收Ultrawideband®、Bluetooth®、GPS、3G、4G及Wi-Fi®等之裝置。如圖2A之實例中展示,通信頻道235可使組件之各者互連,如針對組件間通信展示(實體地、通信地及/或操作地)。在一些實例中,通信頻道235可包含一系統匯流排、一網路連接(例如,至如上文描述之一無線連接)、一或多個程序間通信資料結構或用於在硬體及/或軟體之間本端或遠端地通信資料之任何其他組件。
運算系統202內之一或多個儲存裝置208可儲存資訊,諸如與SDK包裹、SDK組建項、應用程式包裹及應用程式組建項、SDK套裝、應用程式套裝、軟體套裝相關聯之資料及本文中論述之其他資料以在運算系統202之操作期間進行處理。在一些實例中,儲存裝置208之一或多個儲存裝置可為一揮發性或暫時性記憶體。揮發性記憶體之實例包含隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)及此項技術中已知之其他形式之揮發性記憶體。在一些實例中,儲存裝置208亦可包含一或多個電腦可讀儲存媒體。儲存裝置208可經組態以在非揮發性記憶體中比揮發性記憶體更長期地儲存更大量資訊。非揮發性記憶體之實例包含磁硬碟、光碟、軟碟、快閃記憶體或若干形式之電可程式化記憶體(EPROM)或電可抹除及可程式化(EEPROM)記憶體。儲存裝置208可儲存與作業系統223及分配模組210相關聯之程式指令及/或資料。
運算系統202之一或多個I/O裝置233可接收輸入且產生輸出。輸入之實例係觸覺、音訊、運動及光學輸入,僅舉幾個實例。在一個實例中,I/O裝置233之輸入裝置可包含一觸控螢幕、一觸控墊、一滑鼠、一鍵盤、一語音回應系統、一視訊攝影機、按鈕、一控制墊、一麥克風或用於偵測來自一人類或機器之輸入之任何其他類型之裝置。I/O裝置233之輸出裝置可包含一音效卡、一視訊圖形配接器卡、一揚聲器、一顯示器或用於向一人類或機器產生輸出之任何其他類型之裝置。
分配模組210之一或多者可使用駐留在運算系統202中或一或多個其他遠端運算裝置(例如,基於雲端之應用程式,未展示)處且在其上執行之軟體、硬體、韌體或硬體、軟體及韌體之一混合物來執行本文中描述之操作。運算系統202可使用一或多個處理器204執行分配模組210,諸如應用程式套裝模組225、SDK套裝模組215及軟體套裝模組227,或可作為在下層硬體上執行之一虛擬機或在該虛擬機內執行分配模組210之任一者或部分。分配模組210可以各種方式實施,例如,作為一可下載或預安裝之應用程式、遠端地作為一雲端應用程式或作為運算系統202之作業系統223之部分。實施本發明之技術之運算系統202之其他實例可包含圖1、圖2A或圖2B中未展示之額外組件。
在圖2A之實例中,一或多個處理器204可在運算系統202內實施功能性及/或執行指令。例如,一或多個處理器204可接收及執行提供UIC 206、通信單元207及一或多個儲存裝置208及作業系統223之功能性之指令以執行如本文中描述之一或多個操作。一或多個處理器204可包含中央處理單元(CPU) 229。CPU 229之實例包含但不限於一數位信號處理器(DSP)、一通用微處理器、一張量處理單元(TPU);一神經處理單元(NPU);一神經處理引擎;一CPU、VPU、GPU、TPU、NPU或其他處理裝置之一核心、一特定應用積體電路(ASIC)、一場可程式化邏輯陣列(FPGA)或其他等效積體或離散邏輯電路或其他等效積體或離散邏輯電路。
一或多個處理器204可在運算系統202內實施功能性及/或執行指令。例如,一或多個處理器204可接收及執行提供分配模組210之一些或全部之功能性之指令以執行本文中描述之一或多個操作及各種功能以套裝化及分配一或多個SDK套裝及一或多個應用程式套裝。例如,SDK組建項可被格式化為一獨立可運行物件,使得SDK套裝外加全部相依一起經套裝化在獨立於應用程式套裝之一單一可交付項目中。
在一個實例中,SDK及其相關聯應用程式可相依於一共同程式庫(未展示)之不同版本。在此一情況下,SDK套裝模組(例如,SDK套裝模組215)可基於共同程式庫重命名及重新套裝化該等相依,以便不與相同名稱及不同版本之一應用程式庫衝突。在使用主要及次要版本類型之實例中,當一裝置上之多個應用程式相依於SDK之相同主要版本時,則全部該等應用程式將相依於SDK之相同次要版本。
分配模組210可使應用程式開發者能夠為支援分離的SDK及應用程式之目標使用者運算裝置以及不支援分離的SDK及應用程式之使用者運算裝置組建一單一應用程式或人工製品。應用程式開發者可依賴於分配模組210以正確地分配給支援分離的SDK及應用程式之目標使用者運算裝置及不支援分離的SDK及應用程式之目標運算裝置。分配模組210之軟體套裝模組227可藉由將SDK套裝合併至應用程式套裝中來產生一組合套裝以分配給不支援SDK與應用程式之運行時分離之使用者運算裝置。軟體套裝模組227亦可針對支援分離的SDK及應用程式之使用者運算裝置將應用程式套裝及SDK套裝作為分開的套裝發送。應用程式開發者僅需將應用程式及SDK之一指示(諸如一相依宣告中之SDK之一主要版本之一指示)提供至分配模組210。
分配模組210可使應用程式開發者能夠諸如藉由使用一相依宣告而對哪些SDK版本將與其等之應用程式一起部署具有一些保證。如下文關於圖3描述,應用程式開發者可宣告一應用程式具有對一SDK之一主要版本之一相依。當一使用者運算裝置不支援SDK與應用程式之運行時分離時,分配模組210之軟體套裝模組227可藉由將SDK套裝(如由相依宣告所指示)與應用程式套裝合併來產生一組合套裝以進行分配。當一使用者運算裝置確實支援SDK與應用程式之運行時分離時,分配模組210之軟體套裝模組227可提供如由相依宣告所指示之SDK套裝。相依宣告亦可被提供至使用者運算裝置以確保其使用正確SDK版本。
分配模組210可使SDK開發者能夠逐步推出新版本,快速偵測問題,且在必要時回復(rollback)。分配模組210可用於將SDK版本與應用程式相關聯。可使用分配模組210快速引入SDK之新次要版本。一旦一新SDK版本被提供至運算系統202處之分配模組210,其便可與應用程式相關聯。由於運算系統202分配給許多使用者運算裝置,所以其可接收關於一SDK版本之問題之集中回饋,該回饋可被提供給SDK開發者。此回饋可比來自使用SDK版本之應用程式開發者之回饋更直接。
運算系統202處之分配模組210可為一SDK版本之回復提供一中央位置。分配模組210可停用待回復至一較舊SDK版本之一SDK版本。較舊SDK版本以及停用較新SDK版本之指令可被提供至支援SDK與應用程式之運行時分離之使用者運算裝置。分配模組210可藉由將較舊SDK與應用程式合併且將其等作為一套裝提供至不支援SDK與應用程式之運行時分離之使用者運算裝置來產生一組合套裝以進行回復。透過集中式運算系統202回復一SDK版本比透過各使用SDK版本之多個應用程式開發者回復一SDK版本更快且更高效。
SDK更新可影響大量應用程式。例如,次要版本可由運算系統202自動更新,此可影響相依於裝置上之SDK之對應主要版本之應用程式。運算系統202可向SDK模組提供可用於一所請求主要版本之最新次要版本。
可使用防護來最小化一不良SDK版本之不利影響,包含新SDK版本之一漸進、逐步推出。(諸如對一小部分使用者)。SDK開發者之工具可用於監測SDK推出,且具有崩潰報告功能性。系統可具有視需要將一SDK回復至一先前版本之一能力。系統可向受影響之應用程式通知SDK更新,且使應用程式能夠報告SDK之問題。
SDK套裝模組215可將SDK包裹套裝化成經組態以安裝在一裝置(例如,圖2B之使用者運算裝置220)上以供安裝在裝置上之一或多個應用程式存取之一SDK套裝。SDK套裝模組215可將SDK組建項格式化為一獨立可運行物件,使得SDK套裝外加全部相依一起可經套裝化在獨立於應用程式套裝之一單一可交付項目中。
應用程式套裝模組225可從由應用程式開發者提供之應用程式包裹116產生一應用程式套裝(例如,應用程式套裝117)。應用程式套裝模組225可將應用程式組態為安裝在一裝置(例如,圖2B之使用者運算裝置220)上。應用程式套裝模組225可格式化應用程式,使得其等可在一第一程序中運行,且在一分開的程序中與一SDK互動。
軟體套裝模組227可將應用程式套裝及SDK套裝組合成一軟體套裝以發送至一裝置,諸如使用者運算裝置120。在另一實例中,軟體套裝模組227可在相同或分開的傳輸中將應用程式套裝及SDK套裝以分開的套裝(例如,檔案)發送至使用者運算裝置120。
圖2B係繪示根據本發明之一或多個態樣之針對一應用程式沙盒化一SDK之實例使用者運算裝置220之一方塊圖。圖2B繪示如圖1中繪示之使用者運算裝置120之一個實例。使用者運算裝置220可包含使用者裝置,諸如智慧型電話、個人電腦、智慧型手錶,且可透過一或多個網路(例如,網路145)與遠端運算系統(例如,運算系統102)通信。使用者運算裝置220之許多其他實例可在其他例項中使用,且可包含實例使用者運算裝置220中所包含之組件之一子集,或可包含圖2B中未展示之額外組件。
如圖2B之實例中展示,使用者運算裝置220包含處理器237、一或多個輸入/輸出組件(諸如使用者介面組件(UIC) 239)、一或多個通信單元242及一或多個儲存裝置224。使用者運算裝置220之儲存裝置224可包含分配模組210及作業系統244,且UIC 239可包含I/O (輸入/輸出)裝置241。
例如,使用者運算裝置220之一或多個通信單元242可藉由在使用者運算裝置220處傳輸及/或接收資料來與外部裝置通信,諸如將資料傳輸至遠端電腦系統(諸如圖1之運算系統102)及從其接收資料。例如,使用者運算裝置220可透過通信單元242接收來運算系統102之安裝套裝122。
在一個實例中,沙盒246含有由應用程式249使用之SDK 247,但沙盒246不含有應用程式249。沙盒246可為運行及執行程式碼之一受控、受限環境。此環境有助於開發者隔離及保護系統資源免受惡意軟體及其他類型之網路威脅。沙盒中之程式碼無法對沙盒外之程式碼採取惡意動作,此係因為其不具有如此做所需之適當預設使用者權限。
在圖2B之實例中,平台253維持用於SDK 247之沙盒246及用於應用程式249之沙盒251。沙盒246及沙盒251可為由作業系統244及/或平台253維持之分開的程序。例如,平台253可使用作業系統244之建構來分離SDK 247及應用程式249。例如,如果作業系統244係使用使用者ID (UID)之一Linux作業系統或其他作業系統,則平台253可將唯一UID指派給應用程式249及SDK 247,以便產生內核級沙盒。在此實例中,由於沙盒246及251處於內核級,所以沙盒安全模型擴展至本機碼及OS應用程式及內核以上之全部軟體,包含OS程式庫、應用程式運行時間及應用程式框架。
當軟體套裝被編譯時,一應用程式與其SDK之間之邏輯分離消失。SDK通常具有與應用程式相同之資料存取權限。特定言之,SDK可存取敏感使用者資料(諸如位置資訊)或應用程式資料,有時在應用程式開發者不知情之情況下。因此,即使當使用沙盒化時,SDK及應用程式通常仍由同一沙盒所含。
沙盒246 (含有SDK 247但不含有應用程式249)可在應用程式249與SDK 247之間提供一清晰邊界。在一項實施例中,沙盒246向SDK 247提供有限資料存取、一分開的內容脈絡及無許可。將SDK 247與相依於其之應用程式249分離可透過運行時間隔離來實施策略。分開的SDK 247亦受益於更佳可更新性,此係因為使用者運算裝置220可獨立於應用程式249更新SDK 247。
SDK 247可為一廣告SDK。平台253可給予SDK 247對適合於廣告目標之隱私保護應用程式設計介面(API)之存取。平台253亦可使用指示SDK 247可服務什麼類型之廣告之一組策略。平台253處之工具可實施此等策略。
SDK 247可由使用者運算裝置220處之多個應用程式共用。此意謂SDK 247僅需被發送一次至使用者運算裝置220。如關於圖3論述,應用程式249可宣告對SDK 247之一相依,且使用者運算裝置接著可視需要使應用程式249能夠與SDK 247互動。
作業系統244及/或平台253可控制SDK 247之安裝及卸載。作業系統244及/或平台253可控制使用者運算裝置220上之SDK 247之生命週期,包含更新及停用SDK 247。作業系統244及/或平台253可使SDK開發者能夠在使用者運算裝置220處回復SDK版本。在一個實例中,SDK 247並非由使用者直接卸載。
作業系統244及/或平台253可維持反向相容性,且運行與SDK組合之其他應用程式,以及圖2B中展示之分離的SDK 247及應用程式249。此反向相容性使先前產生之應用程式能夠在使用者運算裝置220上運行。
在一個實例中,應用程式僅顯式地宣告其等所相依之SDK之主要版本,且僅隱式地相依於其等之最新次要版本。使用者運算裝置120在安裝SDK的對應應用程式時安裝SDK,此係因為應用程式無法在不具有其等所相依之全部SDK之情況下運行。在運行時間,SDK可在一沙盒中運行,且平台可經由相依宣告加入SDK及應用程式。在一個實例中,SDK之多個主要版本可安裝在裝置上,但每主要版本僅有一個次要版本。
實例通信單元242包含一網路介面卡(例如,諸如一乙太網路卡)、一光學收發器、一射頻收發器或可發送及/或接收資訊之任何其他類型之裝置。通信單元242之其他實例可為可在運算裝置(諸如行動裝置及類似物)中找到之經組態以傳輸及接收Ultrawideband®、Bluetooth®、GPS、3G、4G及Wi-Fi®等之裝置。如圖2B之實例中展示,通信頻道243可使組件之各者互連,如針對組件間通信展示(實體地、通信地及/或操作地)。在一些實例中,通信頻道243可包含一系統匯流排、一網路連接(例如,至如上文描述之一無線連接)、一或多個程序間通信資料結構或用於在硬體及/或軟體之間本端或遠端地通信資料之任何其他組件。
使用者運算裝置220內之一或多個儲存裝置224可儲存資訊,諸如作業系統244、沙盒246、SDK 247及應用程式249及本文中論述之其他資料以在使用者運算裝置220之操作期間進行處理。在一些實例中,儲存裝置224之一或多個儲存裝置可為一揮發性或暫時性記憶體。揮發性記憶體之實例包含隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)及此項技術中已知之其他形式之揮發性記憶體。在一些實例中,儲存裝置224亦可包含一或多個電腦可讀儲存媒體。儲存裝置224可經組態以在非揮發性記憶體中比揮發性記憶體更長期地儲存更大量資訊。非揮發性記憶體之實例包含磁硬碟、光碟、軟碟、快閃記憶體或電可程式化記憶體(EPROM)或電可抹除且可程式化(EEPROM)記憶體之形式。儲存裝置224可儲存與作業系統244及分配模組210相關聯之程式指令及/或資料。
使用者運算裝置220之一或多個I/O裝置241可接收輸入且產生輸出。輸入之實例係觸覺、音訊、運動及光學輸入,僅舉幾個實例。在一個實例中,I/O裝置241之輸入裝置可包含一觸控螢幕、一觸控墊、一滑鼠、一鍵盤、一語音回應系統、一視訊攝影機、按鈕、一控制墊、一麥克風或用於偵測來自一人類或機器之輸入之任何其他類型之裝置。I/O裝置241之輸出裝置可包含一音效卡、一視訊圖形配接器卡、一揚聲器、一顯示器或用於向一人類或機器產生輸出之任何其他類型之裝置。
沙盒246、SDK 247及應用程式249可使用駐留在使用者運算裝置220中或一或多個其他遠端運算裝置(例如,基於雲端之應用程式,未展示)處且在其上執行之軟體、硬體、韌體或硬體、軟體及韌體之一混合物來執行本文中描述之操作。使用者運算裝置220可作為在下層硬體上執行之一虛擬機或在該虛擬機內執行沙盒246、SDK 247及應用程式249。沙盒246、SDK 247及應用程式249可以各種方式實施,例如,作為一可下載或預安裝之應用程式、遠端地作為一雲端應用程式或作為使用者運算裝置220之作業系統244之部分。實施本發明之技術之使用者運算裝置220之其他實例可包含圖1、圖2A或圖2B中未展示之額外組件。
在圖2B之實例中,一或多個處理器237可在使用者運算裝置220內實施功能性及/或執行指令。例如,一或多個處理器237可接收及執行提供UIC 239、通信單元242及一或多個儲存裝置224及作業系統244之功能性之指令以執行如本文中描述之一或多個操作。一或多個處理器237可包含中央處理單元(CPU) 238。CPU 238之實例包含但不限於一數位信號處理器(DSP)、一通用微處理器、一張量處理單元(TPU);一神經處理單元(NPU);一神經處理引擎;一CPU、VPU、GPU、TPU、NPU或其他處理裝置之一核心、一特定應用積體電路(ASIC)、一場可程式化邏輯陣列(FPGA)或其他等效積體或離散邏輯電路或其他等效積體或離散邏輯電路。
一或多個處理器237可在使用者運算裝置220內實施功能性及/或執行指令。例如,一或多個處理器237可接收及執行提供沙盒246、SDK 247及應用程式249之一些或全部之功能性之指令以執行本文中描述之一或多個操作及各種功能。
運算裝置220可接收包含一應用程式套裝及一SDK套裝之安裝套裝。應用程式可宣告對一SDK版本之一相依。運算裝置220可使用所宣告之相依來判定一SDK套裝中之一SDK版本匹配由應用程式宣告之相依。例如,應用程式可指示應用程式所相依之SDK之一主要版本。電腦裝置220亦可選擇對應於主要版本之一次要版本(諸如SDK之最新次要版本)以與應用程式一起運行。
運算裝置220可使用平台253支援SDK與應用程式之運行時分離,如上文論述。運算裝置220可在使用者運算裝置上之一第一程序中(諸如在沙盒246中)運行選定SDK 247,且在相異於使用者運算裝置上之第一程序之一第二程序中運行應用程式。第一程序中之SDK 247可被限制存取第二程序中之應用程式之資料。SDK 247之一安全及隱私風險可較小,此係因為其無法存取應用程式資料。第二程序中之應用程式249可使用SDK 247在第一程序中運行時之功能性。
SDK及應用程式亦可獨立更新。運算裝置220可接收SDK之新次要版本而不同時接收一應用程式,且如果運算裝置220已具有正確SDK,則運算裝置220不必重新發送相同SDK與應用程式之一新版本。
圖3係繪示可經由包含使用者裝置上之SDK套裝之一軟體套裝分配及安裝之獨立SDK組建項之已發佈版本之實例之一圖。獨立SDK組建項之已發佈版本可由一應用程式商店(例如,圖1及圖2A之運算系統102及202)分配,且經由包含使用者裝置(例如,圖1之使用者運算裝置120及圖2B之使用者運算裝置220)上之一SDK套裝之一安裝套裝(例如,安裝套裝122)安裝。例如,當開發應用程式時,應用程式352宣告對SDK主要版本1.0之一相依。在一個實例中,一主機(例如,應用程式商店)發佈SDK之一較新版本,諸如由運算系統202產生之SDK套裝354,其包含主要版本1.0及2.0以及次要版本1.1及2.1。由於應用程式352宣告主要版本1.0,所以應用程式352將自動使用經更新次要版本1.1,而非較舊主要版本1.0或2.0版本之任一者。此類似地繪示為應用程式356及SDK套裝358利用經更新SDK套裝358中之次要版本1.2來宣告主要版本1.0。
在一單一SDK套裝內包含多個主要版本可使同一裝置(例如,使用者運算裝置120)上之多個應用程式能夠宣告及利用SDK套裝360中所包含之SDK之不同版本,而不必更新應用程式或請求額外SDK組建項。例如,SDK套裝360可包含兩個或更多主要版本及相關聯次要版本。應用程式362可宣告主要版本2.0,且應用程式364可宣告SDK套裝360中所包含之SDK之主要版本1.0。在此實例中,應用程式362將利用最新次要版本2.1,且應用程式364將利用最新次要版本1.2,該兩者皆包含在SDK套裝360內。
在圖3之實例中,一應用程式開發者可升級一主要版本(至SDK V2.1),但由於應用程式364宣告對一較舊主要版本(SDK V1.2)之一相依,所以SDK版本V2.1及V1.2兩者皆維持在使用者運算裝置上。需在使用者運算裝置上維持每主要版本僅一個SDK,此係因為一新次要版本可取代使用者運算裝置處之一舊次要版本。
「主要版本」/「次要版本」型號僅係分配可相互替換之SDK版本集之一個實例實施方案。在此實例中,同一主要版本下之全部次要版本可彼此替換,此係因為相依於主要或次要版本之一者之一應用程式確保與同一版本中之全部版本相容。因而,在此實例中,屬於不同主要版本之次要版本可無法彼此替換且在運行時發生衝突。
在其他實例中,SDK開發者可上傳具有SDK組建項之多個版本之一SDK包裹,且將識別符提供至可相互替換之SDK組建項群組。例如,一SDK開發者可包含一圖表,其中各SDK版本係一節點,且圖表中之各所連接組件係可彼此替換之SDK組建項版本之一群組。如果兩個(已安裝及新)版本屬於可相互替換之SDK組建項版本之同一群組,則應用程式商店可將包含一新SDK組建項版本之一經更新SDK套裝提供至一裝置。
圖4係繪示根據本發明之一或多個態樣之一實例工作流程470之一圖,其展示發佈包含可經由一軟體套裝(例如,至使用者裝置,諸如圖1之使用者運算裝置120及圖2B之使用者運算裝置220之安裝套裝122)分配及安裝之SDK組建項之一SDK套裝之一流程。下文在圖1之運算系統102及圖2A之運算系統202之內容脈絡中描述圖4。例如,應用程式商店482可在圖1之運算系統102及圖2A之運算系統202中實施。在其他實例中,SDK組建系統483及應用程式組建系統475可由運算系統102及運算系統202實施,在一不同電腦系統上實施,或在一開發者之裝置(例如,圖1之應用程式開發者運算裝置112及SDK開發者運算裝置114)上本端地實施,或其等之任何組合。
圖4包含SDK包裹472、應用程式套裝474及應用程式包裹476以及SDK 477。圖4另外包含應用程式商店482,其經由一安裝套裝(例如,圖1之安裝套裝122)從應用程式商店482提供應用程式套裝478、應用程式480及SDK 481。如繪示,應用程式套裝478包含在應用程式開發時套裝化成一單一不可分離檔案(例如,Java可執行檔案)之應用程式碼及SDK碼,且透過應用程式商店482 (例如,運算系統102、202)分配。例如,如上文關於圖1論述,為了支援反向相容性,應用程式商店482可藉由將SDK套裝(例如,來自SDK包裹472)合併至應用程式套裝(例如,來自應用程式包裹473)中來產生安裝套裝以分配給不支援SDK與應用程式之運行時分離之使用者裝置。
在一個實例中,根據本發明之一或多個態樣,SDK包裹472可被提供至應用程式開發環境及應用程式商店482。SDK包裹472可被拆分成SDK 477,且在一沙盒化環境中與應用程式包裹476分開運行。在一個實例中,SDK 477包含一或多個SDK組建項,其或其等可包含許多主要及次要版本組建項(例如,v1.0、v1.1、v2.0等)。在開發時,由於SDK碼未直接整合至應用程式中,所以應用程式包裹476宣告在安裝在一裝置上之後其將相依於SDK組建項之哪一主要版本(例如,v2.0)來執行。此宣告允許應用程式商店482獨立於應用程式包裹476管理、套裝化SDK包裹472 (例如,SDK套裝360)之內容物且將其等分配給裝置。
在一個實例中,應用程式商店482分配從應用程式開發環境接收之應用程式包裹476以套裝化及分配給一裝置(例如,使用者運算裝置120)。在一個實例中,應用程式包裹476可接收自一應用程式開發者且作為應用程式包裹473儲存在應用程式儲存器471中。應用程式商店482可擷取應用程式包裹473且將其包含在一安裝套裝中以取決於目的地裝置組態在具有或不具有一SDK包裹之情況下分配。應用程式商店482可將SDK 481分開地套裝化及分配給裝置以在與應用程式分開之一程序(例如,沙盒化環境)中安裝及執行。在一個實例中,一經更新SDK包裹(例如,SDK包裹472之新版本)被提供至應用程式商店482,且可包含SDK組建項之新主要及次要版本。應用程式商店482可獨立於應用程式480之版本將經更新SDK包裹(例如,SDK 481)套裝化及分配(例如,推出)給使用者裝置。
在一個實例中,應用程式商店482可在分配SDK 481之前針對SDK包裹472之內容物檢查及實施策略。此提供針對可損及資料(例如,使用者資料)、違反應用程式商店策略及欺詐(諸如在結合一應用程式執行之一廣告SDK內產生虛假點擊付款)之一SDK包裹提供安全及資料保護之一個實例優點。
在一個實例中,一SDK開發者可使用SDK組建系統483來產生一新SDK模組。SDK組建系統483可從外部儲存庫下載任何遞移相依,且接著編譯、最佳化及套裝化SDK。SDK組建系統483可驗證SDK以確保其滿足隱私及其他,且將SDK包裹儲存在SDK儲存器中。
在應用程式組建系統475處,應用程式開發者可具有將被融合至應用程式中以進行更快增量組建之SDK碼。應用程式開發者亦可將SDK側載入至一沙盒測試環境中。
應用程式商店482可儲存安裝套裝且將其等提供至裝置。在圖4之實例中,向裝置484提供應用程式套裝478,且向裝置420提供分開的應用程式480及SDK 481。
應用程式商店482可將SDK之最新次要版本提供至裝置484及420。當一新次要版本從SDK開發者被提供至應用程式商店482時。應用程式商店482可重新套裝化被提供至裝置484及420之安裝套裝。
圖5係繪示根據本發明之一或多個態樣之一運算裝置產生用於分配給使用者裝置之軟體套裝之一實例操作模式之一流程圖。下文在圖1之運算系統102及圖2A之運算系統202之內容脈絡中描述圖5。運算系統102可在以下意義上充當接收來自一應用程式開發者之應用程式包裹116及接收來一SDK開發者之SDK包裹118之一中央位置:即使當運算系統102被分配時運算系統102仍可在一單一實體之控制下接收及分配應用程式及SDK。運算系統102可將諸如安裝套裝122中之SDK提供至使用者運算裝置120。
如圖5中展示,運算系統102例如可接收一軟體開發套組(SDK)包裹,其中SDK包裹包含一或多個SDK組建項(502)。運算系統102可充當SDK組建項之一中央提供者,而非依賴於應用程式開發者來組合SDK與應用程式。使電腦系統102接收SDK包裹使運算系統102能夠充當SDK組建項之此一中央提供者。
運算系統102可將SDK包裹套裝化成經組態以安裝在一裝置(例如,使用者運算裝置120)上以供安裝在裝置上之一或多個應用程式存取之一SDK套裝,其中各應用程式在運行時間期間相依於一或多個SDK組建項之一SDK組建項(504)。運算裝置可將包含一或多個SDK組建項之SDK套裝輸出至裝置,其中各SDK組建項經組態以在裝置上之相對於各對應應用程式之一分開的程序中運行(506)。SDK套裝可為提供至裝置(諸如使用者運算裝置120)之安裝套裝122之部分。使各SDK組建項經組態以在裝置上之相對於各對應應用程式之一分開的程序中運行使裝置(諸如使用者運算裝置120)能夠在與應用程式不同之一程序中運行SDK。此提供安全及隱私優點,此係因為SDK可被限制而不具有應用程式之全部權限。例如,裝置(諸如使用者運算裝置120)可沙盒化SDK,使得其無法存取應用程式資料,此係因為SDK不在與應用程式相同之程序中運行。
圖6係繪示根據本發明之一或多個態樣之一使用者運算裝置在不同程序中運行一SDK及應用程式之一實例操作模式之一流程圖。下文在圖1之使用者運算裝置120及圖2B之使用者運算裝置220之內容脈絡中描述圖6。如圖6中展示,使用者運算裝置120例如可接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中應用程式套裝中之一應用程式宣告對一SDK版本之一相依(602)。使用者運算裝置120可使用應用程式對SDK版本之相依宣告來避免必須運行一組合應用程式及SDK,其通常作為一單一程序運行。
使用者運算裝置120可判定SDK套裝中之一SDK匹配由應用程式宣告之相依(604)。使用者運算裝置120可在使用者運算裝置120上之一第一程序中運行SDK (606)。使用者運算裝置120可在使用者運算裝置120上之一第二程序中運行應用程式,使用者運算裝置120上之第二程序相異於使用者運算裝置120上之第一程序,其中使用者運算裝置120上之第一程序中之SDK被限制存取使用者運算裝置120上之第二程序中之應用程式之資料,且應用程式使用SDK在使用者運算裝置120上之一第一程序中之功能性(608)。由於使用者運算裝置120在分開的程序中運行應用程式及SDK,所以使用者電腦裝置可諸如藉由限制對應用程式之資料之存取來限制SDK之操作且改良隱私及安全性。因此,使用者運算裝置120可以在一組合SDK及應用程式在一單一程序中運行的情況下將為不可能之一方式沙盒化SDK。
本發明包含以下實例。
實例1:一種方法,其包括:由一運算系統接收一軟體開發套組包裹,其中該軟體開發套組包裹包含一或多個軟體開發套組組建項;由該運算系統將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中來自安裝在該裝置上之該一或多個應用程式之各應用程式在運行時間期間相依於來自該一或多個軟體開發套組組建項之一軟體開發套組組建項;及由該運算系統提供包含該一或多個軟體開發套組組建項之該軟體開發套組套裝且將其提供至該裝置,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
實例2:如實例1之方法,其進一步包括:由該運算系統接收一應用程式包裹,其中該應用程式包裹包含經組態以安裝在該裝置上且經組態以在運行時間期間在該裝置上存取來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一應用程式組建項;及由該運算系統將該應用程式包裹套裝化成經組態以由該裝置接收及安裝之一應用程式套裝。
實例3:如實例1至2中任一項之方法,其進一步包括由該運算系統接收包含來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一經更新版本之一經更新軟體開發套組包裹。
實例4:如實例3之方法,其中該軟體開發套組組建項之該經更新版本係與安裝在該裝置上之該一或多個應用程式之至少一者相容之該軟體開發套組組建項之一次要版本。
實例5:如實例3之方法,其中該軟體開發套組組建項之該經更新版本係基於由該一或多個應用程式之各應用程式宣告之該軟體開發套組組建項之一主要版本。
實例6:如實例1至5中任一項之方法,其中來自該軟體開發套組包裹之該一或多個軟體開發套組組建項包含複數個主要版本及各對應於來自該複數個主要版本之一主要版本之一或多個次要版本。
實例7:如實例1至6中任一項之方法,其中將該軟體開發套組包裹套裝化成該軟體開發套組套裝進一步包括:在該軟體開發套組套裝中包含一或多個軟體開發套組內部相依,其中一或多個軟體開發套組內部相依係由安裝在該裝置上之該一或多個應用程式存取之相依;及藉由重命名該一或多個軟體開發套組內部相依之各者來避免與該一或多個應用程式之相依衝突。
實例8:如實例7之方法,其中該一或多個軟體開發套組內部相依之各者係一程式庫檔案。
實例9:如實例1至8中任一項之方法,其中該軟體開發套組套裝經組態以防止該裝置起始該軟體開發套組套裝自該裝置之一卸載。
實例10:一種運算裝置,其包括:一記憶體;及一或多個處理器,其或其等可操作地耦合至該記憶體且經組態以:接收一軟體開發套組包裹,其中該軟體開發套組包裹包括一或多個軟體開發套組組建項;將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中各應用程式在運行時間期間相依於該一或多個軟體開發套組組建項之一軟體開發套組組建項;及提供包含該一或多個軟體開發套組組建項之該軟體開發套組包裹,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
實例11:如實例10之運算裝置,其中該一或多個處理器經進一步組態以接收一應用程式包裹,其中該應用程式包裹包含經組態以安裝在該裝置上且經組態以在運行時間期間在該裝置上存取來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一應用程式組建項;且經組態以將該應用程式包裹套裝化成經組態以由該裝置接收及安裝之一應用程式套裝。
實例12:如實例10至11中任一項之運算裝置,其中該一或多個處理器經進一步組態以接收包含來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一經更新版本之一經更新軟體開發套組包裹。
實例13:如實例12之運算裝置,其中該軟體開發套組組建項之該經更新版本係該軟體開發套組組建項之一次要版本。
實例14:如實例12之運算裝置,其中該軟體開發套組組建項之該經更新版本係基於由該一或多個應用程式之至少一個應用程式宣告之該軟體開發套組組建項之一主要版本。
實例15:如實例10至14中任一項之運算裝置,其中來自該軟體開發套組包裹之該一或多個軟體開發套組組建項包含複數個主要版本及各對應於來自該複數個主要版本之一主要版本之一或多個次要版本。
實例16:如實例10至15中任一項之運算裝置,其中將該軟體開發套組包裹套裝化成該軟體開發套組套裝,其中該一或多個處理器經進一步組態以:在該軟體開發套組套裝中包含一或多個軟體開發套組內部相依,其中一或多個軟體開發套組內部相依係由安裝在該裝置上之該一或多個應用程式存取之相依;及藉由重命名該一或多個軟體開發套組內部相依之各者來避免與該一或多個應用程式之相依衝突。
實例17:如實例16之運算裝置,其中該一或多個軟體開發套組內部相依之各者係一程式庫檔案。
實例18:一種電腦可讀儲存媒體,其具有指令儲存在其上,該等指令當被執行時導致一運算裝置之至少一個處理器:接收一軟體開發套組包裹,其中該軟體開發套組包裹包括一或多個軟體開發套組組建項;將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中各應用程式在運行時間期間相依於該一或多個軟體開發套組組建項之一軟體開發套組組建項;及提供包含該一或多個軟體開發套組組建項之該軟體開發套組包裹,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
實例19:如實例18之電腦可讀儲存媒體,其進一步包括指令,該等指令當被執行時導致一運算裝置之至少一個處理器接收一應用程式包裹,其中該應用程式包裹包含經組態以安裝在該裝置上且經組態以在運行時間期間在該裝置上存取來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一應用程式組建項;且經組態以將該應用程式包裹套裝化成經組態以由該裝置接收及安裝之一應用程式套裝。
實例20:如實例18至19中任一項之電腦可讀儲存媒體,其進一步包括指令,該等指令當被執行時導致一運算裝置之至少一個處理器接收包含來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一經更新版本之一經更新軟體開發套組包裹。
實例21:如實例20之電腦可讀儲存媒體,其中該軟體開發套組組建項之該經更新版本係該軟體開發套組組建項之一次要版本。
實例22:如實例20之電腦可讀儲存媒體,其中該軟體開發套組組建項之該經更新版本係基於由該一或多個應用程式之至少一個應用程式宣告之該軟體開發套組組建項之一主要版本。
實例23:如實例18至22中任一項之電腦可讀儲存媒體,其中來自該軟體開發套組包裹之該一或多個軟體開發套組組建項包含複數個主要版本及各對應於來自該複數個主要版本之一主要版本之一或多個次要版本。
實例24:如實例18至23中任一項之電腦可讀儲存媒體,其中將該軟體開發套組包裹套裝化成該軟體開發套組套裝進一步包括指令,該等指令當被執行時導致一運算裝置之至少一個處理器:在該軟體開發套組套裝中包含一或多個軟體開發套組內部相依,其中一或多個軟體開發套組內部相依係由安裝在該裝置上之該一或多個應用程式存取之相依;及藉由重命名該一或多個軟體開發套組內部相依之各者來避免與該一或多個應用程式之相依衝突。實例25:如實例24之電腦可讀儲存媒體,其中該一或多個軟體開發套組內部相依之各者係一程式庫檔案。
實例25:如實例1至8中任一項之運算裝置,其中該軟體開發套組套裝經組態以防止該裝置起始該軟體開發套組套裝自該裝置之一卸載。
實例26:一種非暫時性電腦可讀儲存媒體,其儲存指令,該等指令當被執行時導致一運算裝置之一或多個處理器執行如實例1至9之方法之任一者。
實例27:一種運算裝置,其包括用於執行如實例1至9中任一項之方法之構件。
實例28:一種方法,其包括:由一使用者運算裝置接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中該應用程式套裝中之一應用程式宣告對一SDK版本之一相依;由該使用者運算裝置判定該SDK套裝中之一SDK匹配由該應用程式宣告之該相依;由該使用者運算裝置在該使用者運算裝置上之一第一程序中運行該SDK;由該使用者運算裝置在該使用者運算裝置上之一第二程序中運行該應用程式,該使用者運算裝置上之該第二程序相異於該使用者運算裝置上之該第一程序,其中該使用者運算裝置上之該第一程序中之該SDK被限制存取該使用者運算裝置上之該第二程序中之該應用程式之資料,且該應用程式使用該SDK在該使用者運算裝置上之一第一程序中之功能性。
實例29:如實例28之方法,其中該判定包含:判定該SDK具有由該應用程式宣告之該主要版本;及判定該SDK具有該主要版本之最新次要版本。
實例30:一種運算裝置,其包括:一記憶體;及一或多個處理器,其或其等可操作地耦合至該記憶體且經組態以:接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中該應用程式套裝中之一應用程式宣告對一SDK版本之一相依;由該使用者運算裝置判定該SDK套裝中之一SDK匹配由該應用程式宣告之該相依;在該使用者運算裝置上之一第一程序中運行該SDK;在該使用者運算裝置上之一第二程序中運行該應用程式,該使用者運算裝置上之該第二程序相異於該使用者運算裝置上之該第一程序,其中該使用者運算裝置上之該第一程序中之該SDK被限制存取該使用者運算裝置上之該第二程序中之該應用程式之資料,且該應用程式使用該SDK在該使用者運算裝置上之一第一程序中之功能性。
實例31:如實例30之運算裝置,其中該一或多個處理器經進一步組態以:判定該SDK具有由該應用程式宣告之該主要版本;及判定該SDK具有該主要版本之最新次要版本。
實例32:一種電腦可讀儲存媒體,其具有指令儲存在其上,該等指令當被執行時導致一運算裝置之至少一個處理器:接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中該應用程式套裝中之一應用程式宣告對一SDK版本之一相依;由該使用者運算裝置判定該SDK套裝中之一SDK匹配由該應用程式宣告之該相依;在該使用者運算裝置上之一第一程序中運行該SDK;在該使用者運算裝置上之一第二程序中運行該應用程式,該使用者運算裝置上之該第二程序相異於該使用者運算裝置上之該第一程序,其中該使用者運算裝置上之該第一程序中之該SDK被限制存取該使用者運算裝置上之該第二程序中之該應用程式之資料,且該應用程式使用該SDK在該使用者運算裝置上之一第一程序中之功能性。
實例33:如實例32之電腦可讀儲存媒體,其進一步包括用於判定該SDK具有由該應用程式宣告之該主要版本;及判定該SDK具有該主要版本之最新次要版本之指令。
藉由實例且並非限制,此電腦可讀儲存媒體可包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存裝置、快閃記憶體或可用於儲存呈指令或資料結構之形式之所要程式碼且可由一電腦存取之任何其他儲存媒體。此外,任何連接可被適當地稱為一電腦可讀媒體。例如,如果使用一同軸電纜、光纖電纜、雙絞線、數位用戶線(DSL)或無線技術(諸如紅外線、無線電及微波)自一網站、伺服器或其他遠端源傳輸指令,則同軸電纜、光纖電纜、雙絞線、DSL或無線技術(諸如紅外線、無線電及微波)被包含於媒體之定義中。然而,應理解,電腦可讀儲存媒體(mediums及media)及資料儲存媒體不包含連接、載波、信號或其他暫態媒體,而係關於非暫態有形儲存媒體。如本文中使用,磁碟及光碟包含光碟(CD)、雷射光碟、光學碟、數位多功能光碟(DVD)、軟碟及藍光光碟,其中磁碟通常磁性地重現資料,而光碟使用雷射光學地重現資料。上文之組合亦應被包含在一電腦可讀媒體之範疇內。
本發明中描述之技術可至少部分在硬體、軟體、韌體或其等之任何組合中實施。例如,所描述技術之各種態樣可在一或多個處理器內實施,包含一或多個微處理器、數位信號處理器(DSP)、特定應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或任何其他等效積體或離散邏輯電路,以及此等組件之任何組合。術語「處理器」或「處理電路」通常可指代前述邏輯電路之任一者,單獨地或與其他邏輯電路組合,或任何其他等效電路。包含硬體之一控制單元亦可執行本發明之技術之一或多者。
此硬體、軟體及韌體可在同一裝置內或在分開的裝置內實施以支援本發明中描述之各種技術。另外,所描述單元、模組或組件之任一者可一起或分開地實施為離散但可互操作之邏輯裝置。將不同特徵描繪為模組或單元旨在突出不同功能態樣,且不一定暗示此等模組或單元必須由分開的硬體、韌體或軟體組件來實現。實情係,與一或多個模組或單元相關聯之功能性可由分開的硬體、韌體或軟體組件來執行,或整合在共同或分開的硬體、韌體或軟體組件內。
已描述本發明之各種實例。此等及其他實例在以下發明申請專利範圍之範疇內。
100:應用程式發佈系統 102:運算系統 104:處理器 106:UI組件 108:儲存裝置 110:分配模組 112:應用程式開發者運算裝置 114:軟體開發套組(SDK)開發者運算裝置 116:應用程式包裹 117:應用程式套裝 118:軟體開發套組(SDK)包裹 119:軟體開發套組(SDK)套裝 120:使用者運算裝置 122:安裝套裝 126:軟體開發套組(SDK) 128:應用程式 140:網路 145:網路 202:運算系統 204:處理器 206:使用者介面組件(UIC) 207:通信單元 208:儲存裝置 210:分配模組 215:軟體開發套組(SDK)套裝模組 220:使用者運算裝置 223:作業系統 224:儲存裝置 225:應用程式套裝模組 227:軟體套裝模組 229:中央處理單元(CPU) 233:輸入/輸出(I/O)裝置 235:通信頻道 237:處理器 238:中央處理單元(CPU) 239:使用者介面組件(UIC) 241:輸入/輸出(I/O)裝置 242:通信單元 243:通信頻道 244:作業系統 246:沙盒 247:軟體開發套組(SDK) 249:應用程式 251:沙盒 253:平台 352:應用程式 354:軟體開發套組(SDK)套裝 356:應用程式 358:軟體開發套組(SDK)套裝 360:軟體開發套組(SDK)套裝 362:應用程式 364:應用程式 420:裝置 470:工作流程 471:應用程式儲存器 472:軟體開發套組(SDK)包裹 473:應用程式包裹 474:應用程式套裝 475:應用程式組建系統 476:應用程式包裹 477:軟體開發套組(SDK) 478:應用程式套裝 480:應用程式 481:軟體開發套組(SDK) 482:應用程式商店 483:軟體開發套組(SDK)組建系統 484:裝置 502:操作 504:操作 506:操作 602:操作 604:操作 606:操作 608:操作
圖1係繪示根據本發明之一或多個態樣之一實例SDK及應用程式發佈系統之一方塊圖。
圖2A係繪示根據本發明之一或多個態樣之用於產生用於分配給使用者裝置之軟體套裝之一實例運算系統之一方塊圖。
圖2B係繪示根據本發明之一或多個態樣之針對一應用程式沙盒化一SDK之一實例使用者運算裝置之一方塊圖。
圖3係繪示可經由包含使用者裝置上之SDK套裝之一軟體套裝分配及安裝之獨立SDK組建項之已發佈版本之實例之一圖。
圖4係繪示根據本發明之一或多個態樣之一實例工作流程之一圖,其展示發佈包含可經由一軟體套裝分配及安裝之SDK組建項之一SDK套裝之一流程。
圖5係繪示根據本發明之一或多個態樣之一運算裝置產生用於分配給使用者裝置之軟體套裝之一實例操作模式之一流程圖。
圖6係繪示根據本發明之一或多個態樣之一使用者運算裝置在不同程序中運行一SDK及應用程式之一實例操作模式之一流程圖。
100:應用程式發佈系統
102:運算系統
104:處理器
106:UI組件
108:儲存裝置
110:分配模組
112:應用程式開發者運算裝置
114:軟體開發套組(SDK)開發者運算裝置
116:應用程式包裹
117:應用程式套裝
118:軟體開發套組(SDK)包裹
119:軟體開發套組(SDK)套裝
120:使用者運算裝置
122:安裝套裝
126:軟體開發套組(SDK)
128:應用程式
140:網路
145:網路

Claims (14)

  1. 一種方法,其包括: 由一運算系統接收一軟體開發套組包裹,其中該軟體開發套組包裹包含一或多個軟體開發套組組建項; 由該運算系統將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中來自安裝在該裝置上之該一或多個應用程式之各應用程式在運行時間期間相依於來自該一或多個軟體開發套組組建項之一軟體開發套組組建項;及 由該運算系統提供包含該一或多個軟體開發套組組建項之該軟體開發套組套裝且將其提供至該裝置,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
  2. 如請求項1之方法,其進一步包括: 由該運算系統接收一應用程式包裹,其中該應用程式包裹包含經組態以安裝在該裝置上且經組態以在運行時間期間在該裝置上存取來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一應用程式組建項;及 由該運算系統將該應用程式包裹套裝化成經組態以由該裝置接收及安裝之一應用程式套裝。
  3. 如請求項1至2中任一項之方法,其進一步包括: 由該運算系統接收包含來自該一或多個軟體開發套組組建項之該軟體開發套組組建項之一經更新版本之一經更新軟體開發套組包裹。
  4. 如請求項3之方法,其中該軟體開發套組組建項之該經更新版本係該軟體開發套組組建項之一次要版本。
  5. 如請求項3之方法,其中該軟體開發套組組建項之該經更新版本係基於由該一或多個應用程式之至少一個應用程式宣告之該軟體開發套組組建項之一主要版本。
  6. 如請求項1至2中任一項之方法,其中來自該軟體開發套組包裹之該一或多個軟體開發套組組建項包含複數個主要版本及各對應於來自該複數個主要版本之一主要版本之一或多個次要版本。
  7. 如請求項1至2中任一項之方法,其中將該軟體開發套組包裹套裝化成該軟體開發套組套裝進一步包括: 在該軟體開發套組套裝中包含一或多個軟體開發套組內部相依,其中一或多個軟體開發套組內部相依係由安裝在該裝置上之該一或多個應用程式存取之相依;及 藉由重命名該一或多個軟體開發套組內部相依之各者來避免與該一或多個應用程式之相依衝突。
  8. 如請求項7之方法,其中該一或多個軟體開發套組內部相依之各者係一程式庫檔案。
  9. 如請求項1至2中任一項之方法,其中該軟體開發套組套裝經組態以防止該裝置起始該軟體開發套組套裝自該裝置之一卸載。
  10. 一種運算裝置,其包括: 一記憶體;及 一或多個處理器,其或其等可操作地耦合至該記憶體且經組態以: 接收一軟體開發套組包裹,其中該軟體開發套組包裹包括一或多個軟體開發套組組建項; 將該軟體開發套組包裹套裝化成經組態以安裝在一裝置上以供安裝在該裝置上之一或多個應用程式存取之一軟體開發套組套裝,其中各應用程式在運行時間期間相依於該一或多個軟體開發套組組建項之一軟體開發套組組建項;及 提供包含該一或多個軟體開發套組組建項之該軟體開發套組套裝,其中來自該一或多個軟體開發套組組建項之各軟體開發套組組建項經組態以在該裝置上之相異於其中該一或多個應用程式在該裝置上運行之一或多個程序之一程序中運行。
  11. 一種非暫時性電腦可讀儲存媒體,其儲存指令,該等指令當被執行時導致一運算裝置之一或多個處理器執行如請求項1至9之方法之任一者。
  12. 一種運算裝置,其包括用於執行如請求項1至9中任一項之方法之構件。
  13. 一種方法,其包括: 由一使用者運算裝置接收包含一應用程式套裝及一軟體開發套組(SDK)套裝之一安裝套裝,其中該應用程式套裝中之一應用程式宣告對一SDK版本之一相依; 由該使用者運算裝置判定該SDK套裝中之一SDK匹配由該應用程式宣告之該相依; 由該使用者運算裝置在該使用者運算裝置上之一第一程序中運行該SDK; 由該使用者運算裝置在該使用者運算裝置上之一第二程序中運行該應用程式,該使用者運算裝置上之該第二程序相異於該使用者運算裝置上之該第一程序,其中該使用者運算裝置上之該第一程序中之該SDK被限制存取該使用者運算裝置上之該第二程序中之該應用程式之資料,且該應用程式使用該SDK在該使用者運算裝置上之一第一程序中之功能性。
  14. 如請求項13之方法,其中該判定包含: 判定該SDK具有由該應用程式宣告之該主要版本;及 判定該SDK具有該主要版本之最新次要版本。
TW112103817A 2022-02-04 2023-02-03 軟體開發套組之方法、運算裝置及非暫時性電腦可讀儲存媒體 TWI835545B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263267573P 2022-02-04 2022-02-04
US63/267,573 2022-02-04
WOPCT/US22/81748 2022-12-16
PCT/US2022/081748 WO2023149988A1 (en) 2022-02-04 2022-12-16 Independent publishing and serving of applications and software development kits

Publications (2)

Publication Number Publication Date
TW202333045A true TW202333045A (zh) 2023-08-16
TWI835545B TWI835545B (zh) 2024-03-11

Family

ID=85150342

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112103817A TWI835545B (zh) 2022-02-04 2023-02-03 軟體開發套組之方法、運算裝置及非暫時性電腦可讀儲存媒體

Country Status (2)

Country Link
TW (1) TWI835545B (zh)
WO (1) WO2023149988A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635504B2 (en) * 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9519468B2 (en) * 2015-02-13 2016-12-13 Oracle International Corporation Modular co-versioning in a dynamically linked runtime environment
US10789058B2 (en) * 2018-05-30 2020-09-29 Microsoft Technology Licensing, Llc Extensibility of unified platform

Also Published As

Publication number Publication date
TWI835545B (zh) 2024-03-11
WO2023149988A1 (en) 2023-08-10

Similar Documents

Publication Publication Date Title
US20230297364A1 (en) System And Method For Upgrading Kernels In Cloud Computing Environments
US20210349706A1 (en) Release lifecycle management system for multi-node application
Richter CLR via C
KR101881625B1 (ko) 가상 머신 이주 도구
US11385903B2 (en) Firmware update patch
US7694277B2 (en) Cross version customization of design environment
US9213559B2 (en) Method and device for publishing and implementing wireless application
US20170286136A1 (en) External feature provision for a cloud application registry
US11561784B2 (en) Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms
US20200412769A1 (en) Method and apparatus for interworking of cloud platform and security tools
US9383985B2 (en) Automated modification of pre-generated MSI packaged applications
US11822947B2 (en) Automated management of machine images
US10789058B2 (en) Extensibility of unified platform
CN110214314B (zh) 操作系统验证
US11392366B1 (en) Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms
US9110758B2 (en) Cross-platform software framework for embedded systems on data storage device
US20200159536A1 (en) Unicontainers
US9286083B2 (en) Satisfying missing dependencies on a running system
CN116783581A (zh) 在云平台中配置的数据中心上部署软件发布
US10540193B2 (en) Software-defined microservices
CN116028163A (zh) 一种容器组的动态链接库调度方法、装置及存储介质
CN113900704A (zh) 应用程序安装包的发布方法、装置、可读介质及电子设备
US20140280767A1 (en) Web services provided from software framework
TWI835545B (zh) 軟體開發套組之方法、運算裝置及非暫時性電腦可讀儲存媒體
WO2021009612A1 (en) Method for a container-based virtualization system