專利名稱:移動應用程序的設備相關的按需編譯和部署的制作方法
移動應用程序的設備相關的按需編譯和部署背景電子設備尤其是手持式設備或其他移動設備正日益變成日常生活的一部分,且常常頂替了以前便攜式計算機或甚至臺式計算機專有的許多功能。這些新功能中的許多都得自移動設備下載和運行應用程序程序(在一些情況下被稱為小應用程序(applet))的能力。這些應用程序通常在小型虛擬機或腳本引擎上執(zhí)行。帶有幾乎無限多種存儲器、顯示器、照相機、鍵盤/觸摸屏以及尤其是處理器和它們相關聯(lián)的腳本引擎的移動設備的增長, 已經使得難以在這一廣闊范圍的執(zhí)行環(huán)境上維持應用程序兼容性。概述由于為這樣的移動可編程設備構建的應用程序更加專用于特定的環(huán)境且甚至對支持這樣的應用程序的執(zhí)行的腳本引擎的版本敏感,即使在可以獲得腳本引擎的較新版本的情況下用戶也可能選擇繼續(xù)使用該腳本引擎的先前版本。類似地,諸如照相機或無線接口等外圍設備的版本或類型可以對特定的應用程序發(fā)布或腳本引擎版本具有版本依賴性。帶有智能前端的編譯器可以接收關于特定的移動設備平臺的信息并為該特定環(huán)境編譯應用程序程序的一個版本,該版本不僅針對可用腳本引擎的類型和版本來優(yōu)化該應用程序,而且也考慮了可用存儲器和外圍設備來定制各特征。來自移動設備的對應用程序的請求可以包括執(zhí)行環(huán)境細節(jié),這些執(zhí)行環(huán)境細節(jié)包括諸如照相機類型/分辨率、存儲器大小和速度、腳本引擎類型和版本、顯示器分辨率等等附件。前端可以設置編譯器指令或定制include (包含)文件,以便優(yōu)化編譯過程來用于請求平臺的最優(yōu)可執(zhí)行程序。一些實施方式可預編譯用于最常見的目標環(huán)境的應用程序變體。附圖簡述
圖1是計算機的框圖;圖2是支持移動應用程序的按需編譯和部署的系統(tǒng)的框圖;圖3是支持移動應用程序的按需編譯和部署的另一系統(tǒng)的框圖;圖4是代表性的可編程設備的框圖;圖5是用于傳達定制的應用程序的示例性分組結構;以及圖6是示出為可編程設備創(chuàng)建定制的應用程序的方法的流程圖。詳細描述盡管下文闡明了眾多不同實施例的詳細描述,但是應當理解,該描述的法律范圍由本發(fā)明所附的權利要求書的言辭來限定。該詳細描述應被解釋為僅是示例性的,且不描述每一可能的實施例,因為描述每一可能的實施例即使不是不可能的也是不切實際的??墒褂矛F(xiàn)有技術或在本申請?zhí)峤蝗罩箝_發(fā)的技術來實現(xiàn)眾多替換實施例,而這仍落入權利要求書的范圍之內。還應該理解,在本專利中,除非使用句子“如此處所用,術語‘_,特此被定義
為意指……”或者類似句子來明確地定義一個術語,否則不管是明確地還是含蓄地,都沒有限制該術語意義超出其平?;蚱胀ㄒ饬x的意圖,并且,這一術語不應該被解釋為被限制在基于本專利的任何部分中(除了權利要求書的語言之外)所做的任何陳述的范圍中。就本專利所附的權利要求書中所述的任何術語在本專利中以與單數(shù)意義相一致的方式來引用而言,這是為簡明起見而如此做的,僅僅是為了不使讀者感到混淆,且這類權利要求術語并不旨在隱含地或以其它方式限于該單數(shù)意義。最后,除非一權利要求要素是通過敘述單詞 “裝置”和功能而沒有敘述任何結構來定義的,否則任何權利要求要素的范圍并不旨在基于 35 U. S. C. § 12第6段的應用來解釋。許多發(fā)明性功能和許多發(fā)明性原理最佳地使用或利用軟件程序或指令以及諸如專用IC等集成電路(IC)來實現(xiàn)。期望本領域的普通技術人員雖然可能要進行大量的工作和由例如可用時間、現(xiàn)有技術以及經濟問題促動的許多設計選擇,但是當受到此處所公開的概念和原理的指引時仍能夠容易地以最小的實驗來生成這些軟件指令和程序以及IC。 因此,為了簡明以及最小化使根據(jù)本發(fā)明的原理和概念晦澀的任何風險,對這些軟件和 IC(如果有的話)的進一步討論將限于對于較佳實施例的原理和概念所必需的那些討論。參考圖1,用于實現(xiàn)所要求保護的方法和裝置的示例性系統(tǒng)包括計算機110形式的通用計算設備。盡管在下文中更詳細地描述的可編程設備通??梢允鞘殖质交虮銛y式計算/通信設備,但它可以是在此示出的計算機。計算機110還表示下文描述的用于履行來自可編程設備的請求的典型的服務器。虛線輪廓中所示出的組件在技術上不是計算機110 的一部分,而是用于示出圖1的示例性實施例。計算機110的組件可包括但不限于,處理器 120、系統(tǒng)存儲器130、存儲器/圖形接口 121(也被稱為北橋芯片)以及I/O接口 122(也被稱為南橋芯片)。系統(tǒng)存儲器130和圖形處理器190可以耦合到存儲器/圖形接口 121。 監(jiān)視器191或其他圖形輸出設備可以耦合到圖形處理器190。一系列系統(tǒng)總線可以耦合各種系統(tǒng)組件,這些系統(tǒng)總線包括處理器120、存儲器/ 圖形接口 121和I/O接口 122之間的高速系統(tǒng)總線123,存儲器/圖形接口 121和系統(tǒng)存儲器130之間的前端總線124,以及存儲器/圖形接口 121和圖形處理器190之間的高級圖形處理(AGP)總線125。系統(tǒng)總線123可以是若干種類型的總線結構中的任一種,包括,作為示例而非限制,這些體系結構包括工業(yè)標準體系結構(ISA)總線、微通道體系結構(MCA)總線和增強型ISA(EISA)總線。隨著系統(tǒng)體系結構的進化,可以使用其他總線體系結構和芯片組,但通常大致遵循該模式。例如,諸如英特爾和AMD等公司分別支持英特爾中樞體系結構 Gntel Hub Architecture, IHA)和超傳輸 (Hypertransport)系結構。計算機110通常包括各種計算機可讀介質。計算機可讀介質可以是能由計算機 110訪問的任何可用介質,而且包含易失性和非易失性介質、可移動和不可移動介質。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。計算機存儲介質包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術實現(xiàn)的易失性和非易失性、可移動和不可移動介質。計算機存儲介質包括,但不限于, RAM、ROM、EEPR0M、閃存或其他存儲器技術,CD-ROM、數(shù)字多功能盤(DVD)或其他光盤存儲設備,磁帶盒、磁帶、磁盤存儲設備或其他磁存儲設備,或者能用于存儲所需信息且可以由計算機110訪問的任何其他介質。系統(tǒng)存儲器130包括易失性和/或非易失性存儲器形式的計算機存儲介質,如只讀存儲器(ROM) 131和隨機存取存儲器(RAM) 132。系統(tǒng)ROM 131可包含永久系統(tǒng)數(shù)據(jù)143, 諸如標識和制造信息。在某些實施例中,基本輸入/輸出系統(tǒng)(BIOS)也可存儲在系統(tǒng)ROM 131中。RAM 132通常包含處理器120可以立即訪問和/或目前正在其上操作的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖1示出了操作系統(tǒng)134、應用程序135、其他程序模塊136, 以及程序數(shù)據(jù)137。I/O接口 122可將系統(tǒng)總線123與將各種內部和外部設備耦合到計算機110的多個其他總線126、127和1 耦合。串行外圍接口(SPI)總線1 可連接到包含幫助在諸如啟動期間在計算機110內的各元件之間傳遞信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS) 存儲器133。超級輸入/輸出芯片160可用于連接到多個‘傳統(tǒng)’外圍設備,諸如例如,軟盤152、 鍵盤/鼠標162和打印機196。在某些實施例中,超級I/O芯片160可以用諸如低引腳數(shù) (LPC)總線等總線127來連接到I/O接口 122。超級I/O芯片160的各實施例在商業(yè)市場可廣泛地購買到。在一個實施例中,總線1 可以是外圍部件互連(PCI)總線或其變型,可用于將更高速的外圍設備連接到I/O接口 122。PCI總線可被稱為夾層(Mezzanine)總線。PCI總線的變型包括快速外圍部件互連(PCI-E)和擴展外圍部件互連(PCI-X)總線,前者具有串行接口而后者是向后兼容并行接口。在其他實施例中,總線1 可以是串行高級技術附件 (ATA)總線(SATA)或并行ATA (PATA)形式的ATA總線。計算機110也可以包括其他可移動/不可移動、易失性/非易失性計算機存儲介質。僅作為示例,圖1示出了對不可移動、非易失性磁介質進行讀寫的硬盤驅動器140。硬盤驅動器接口 140可以是常規(guī)硬盤驅動器。諸如通用串行總線(USB)存儲器153、火線(IEEE 1394)、或CD/DVD驅動器156等可移動介質可直接或通過接口 150連接到PCI總線128。類似于以下參考圖2描述的存儲介質巧4可以通過接口 150來耦合??梢栽谑纠圆僮鳝h(huán)境中使用的其他可移動/不可移動、易失性/非易失性計算機存儲介質包括但不限于,磁帶盒、閃存卡、數(shù)字視頻盤(DVD)、 數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。上文所討論的并且在圖1中示出的驅動器及其相關聯(lián)的計算機存儲介質為計算機110提供了對計算機可讀的指令、數(shù)據(jù)結構、程序模塊及其他數(shù)據(jù)的存儲。例如,圖1中, 硬盤驅動器140被示為存儲操作系統(tǒng)144、應用程序145、其它程序模塊146和程序數(shù)據(jù) 147。注意,這些組件可以與操作系統(tǒng)134、應用程序135、其他程序模塊136和程序數(shù)據(jù)137 相同,也可以與它們不同。在此操作系統(tǒng)144、應用程序145、其他程序模塊146以及程序數(shù)據(jù)147被給予了不同的編號,以說明至少它們是不同的副本。用戶可通過諸如鼠標/鍵盤 162等輸入設備或其他輸入設備組合來將命令和信息輸入計算機20。其他輸入設備(未示出)可包括話筒、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等。這些和其他輸入設備通常通過諸如SPI 126、LPC 127或PCI 1 等I/O接口總線中的一個來連接到處理器120,但可以使用其他總線。在某些實施例中,其他設備可經由超級I/O芯片160耦合到并行端口、 紅外接口、游戲端口以及諸如此類(未描繪)。計算機110可使用經由網(wǎng)絡接口控制器(NIC) 170至一個或多個遠程計算機,如遠程計算機180的邏輯連接來在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機180可以是個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其他常見的網(wǎng)絡節(jié)點,并且通常包括上面相對于計算機 110所述的許多或全部元件。圖1所描繪的NIC170和遠程計算機180之間的邏輯連接可包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或兩者,但還可包括其他網(wǎng)絡。這樣的聯(lián)網(wǎng)環(huán)境常見于辦公室、企業(yè)范圍計算機網(wǎng)絡、內聯(lián)網(wǎng)和因特網(wǎng)中。遠程計算機180還可以表示支持與計算機 110進行交互會話的web服務器。在某些實施例中,網(wǎng)絡接口可以在寬帶連接不可用或未使用寬帶連接時使用調制解調器(未描繪)??梢岳斫猓镜木W(wǎng)絡連接是示例性的,且可以使用在計算機之間建立通信鏈路的其它手段。圖2示出支持設備相關的移動應用程序的按需編譯和部署的系統(tǒng)200的一種實施方式。系統(tǒng)200可以包括第一可編程設備202和第二可編程設備204。可編程設備中的每一個可以展現(xiàn)出一些常見基本配置項,例如彩色顯示器、文本輸入能力、1千兆字節(jié)(GByte) 的非易失性存儲存儲器等等。每一設備也可以具有不同于另一設備的特性,例如更大的顯示區(qū)域、更大的色深度、運動傳感器、帶有不同的像素級別或電影能力的照相機等等。每一設備202和設備204可以與諸如因特網(wǎng)或企業(yè)內聯(lián)網(wǎng)或局域網(wǎng)(LAN)或其他公共網(wǎng)絡或專用網(wǎng)絡等網(wǎng)絡基礎設施206通信。通信介質可以是無線的,但有線通信將不是不常見的。 服務器208可以被連接到網(wǎng)絡基礎設施206。服務器208可以充當服務于來自可編程設備 202和204的應用程序請求的履行中心,如下面更詳細地描述。圖3示出支持移動應用程序的設備相關的按需編譯和部署的系統(tǒng)250另一實施方式。系統(tǒng)250可以包括第一可編程設備252和第二可編程設備254。如上面一樣,可編程設備中的每一個可以展現(xiàn)出一些常見基本配置項和獨特元素??删幊淘O備252和可編程設備 2M可以經由網(wǎng)絡基礎設施256與服務器258和存儲設備260通信。網(wǎng)絡基礎設施256可以是因特網(wǎng)、企業(yè)內聯(lián)網(wǎng)或局域網(wǎng)(LAN)或其他公共網(wǎng)絡或專用網(wǎng)絡。服務器258可以被連接到網(wǎng)絡基礎設施256且可以服務于來自可編程設備252和可編程設備2M的應用程序請求。存儲設備260可以存儲針對可編程設備的一種或多種常見配置來預編譯的定制應用程序。例如,一些蜂窩電話運營商可以購買大量特定型號和配置的設備并將它們銷售或者遞送給大型用戶群。對于其需求可由標準配置滿足的用戶,可以將針對該配置的一組預編譯的應用程序存儲在存儲設備260中并按需遞送。圖4示出示例性的可編程設備300??删幊淘O備300可以是蜂窩電話、智能電話、 個人數(shù)字助理、藍牙 附件、或其他便攜式設備??删幊淘O備300也可以是諸如膝上型計算機等計算機,但可以是標準臺式計算機或塔式計算機??删幊淘O備300可以類似于圖1的計算機110,或者可以具有更有限能力的平臺,但同時可以具有更加集成到設備的‘外圍設備’,例如內置攝像頭、以及顯示器/小鍵盤或觸摸屏??删幊淘O備300可以包括處理單元302。處理單元302可以是諸如ARM 系列處理器等帶有易失性存儲器和非易失性存儲器(未示出)的單芯片處理器,但也可以使用其他公知的處理器??删幊淘O備300可以包括用于與諸如圖2的服務器208等主機設備通信的收發(fā)器304。收發(fā)器304可以支持經由天線306的無線通信,但在一些實施方式中,收發(fā)器可以支持有線通信。在無線配置中,收發(fā)器304可以支持諸如Wi-Fi等短距離通信,或者可以支持經由蜂窩電話或PCS基礎設施的遠距離通信。用戶界面可以由小鍵盤308和顯示器310支持。在一些實施方式中,小鍵盤功能可以合并在觸摸屏版本的顯示器310中。存儲器312可以包括易失性存儲器和非易失性存儲器兩者。存儲器312可以存儲數(shù)據(jù)314,例如諸如電話號碼等本地生成的信息以及諸如網(wǎng)頁等所下載的信息。存儲器312也可以存儲實現(xiàn)諸如Java虛擬機或類似的執(zhí)行環(huán)境等腳本執(zhí)行引擎316的可執(zhí)行指令??蓤?zhí)行腳本或應用程序/小應用程序318可以由腳本執(zhí)行引擎316解釋和/或執(zhí)行。包括下載管理器的操作系統(tǒng)320可以被用來支持可編程設備 300中的基本功能以及用戶界面和通信原語。可編程設備300的功能可以由本機程序或所下載的程序322支持,例如,這樣的功能可以與撥號電話號碼或電源管理相關聯(lián)。一個或多個內置硬件或虛擬外圍設備可以被包括在可編程設備300中。這樣的外圍設備可以包括藍牙無線能力324、密碼引擎326、Wi-Fi收發(fā)器328 (802. Ilx)、照相機330、 媒體播放器332、全球定位衛(wèi)星(GPQ接收機334等等。盡管這些外圍設備中的一些可以包括諸如照相機等硬件,但這些外圍設備中的每一個可以具有支持其連接到可編程設備300 以及支持其用戶界面的相關聯(lián)的應用程序。在一些情況中,所下載的應用程序可以將新能力添加到現(xiàn)有設備。例如,媒體播放器332可以經由新應用程序升級以便使用最初安裝的顯示器310和音頻電路323支持諸如新視頻格式等新媒體類型。音頻電路323可以包括一個或多個揚聲器和一個或多個話筒。在操作中,下載系統(tǒng)320可以接收適用于在可編程設備300上執(zhí)行的合格的應用程序的列表。該列表可以被預先加載在可編程設備300上,但預期該列表將經由收發(fā)器304 隨時間而更新。在用戶對為他或她的可編程設備300獲得或更新新應用程序感興趣時,可以呈現(xiàn)合格的應用程序的列表。在用戶做出選擇之后,可以由下載系統(tǒng)/操作系統(tǒng)320收集關于可編程設備300的具體信息。該具體信息可以是關于可編程設備300的配置和當前狀態(tài)的信息,例如處理器類型和速度、腳本引擎類型和版本、屏幕大小和調色板/色深度、 輸入/觸摸屏信息、運動傳感器等等??梢允占撨x擇和具體信息并將其發(fā)送給履行中心。 在接收到帶有所選擇的應用程序的響應時,它大概被定制為匹配所發(fā)送的關于可編程設備 300的具體信息。為了驗證這一點,可以檢查下載包中的信息以便確定與該應用程序相關聯(lián)的特性是否匹配可編程設備300的能力。如果它們匹配,則可以安裝該應用程序且使其對用戶可用。如同其他所下載的應用程序一樣,可以在應用程序的安裝或執(zhí)行之前進行完整性檢查和授權檢查兩者。圖5示出用于傳達定制的應用程序的示例性分組結構。為了支持可編程設備300 驗證應用程序,該分組結構中的信息可以指示對應用程序進行定制的選項。下載包500可以包括通用首部502、定制首部504和所選擇的應用程序的定制版本506。通用首部可以包括通用的應用程序標識信息,例如“bowling 2. 0 (保齡球2. 0),,, 且也可以包括校驗和或其他完整性檢查,以及用于驗證源的真實性的數(shù)字簽名。也可以包括定制首部504,以便允許可編程設備300驗證定制應用程序506對其自己的平臺能力的正確性。定制首部504可以包括但不限于諸如腳本引擎版本508、屏幕大小/色深度510、 運動傳感器支持512和/或無線外圍設備支持514等字段。腳本引擎版本508可以不僅包括可用的腳本支持的類型(例如,Java, Flash、 Silverlight等等),而且也包括該引擎的修訂號或版本號。在一些情況中,某些應用程序將僅在某種級別的腳本弓I擎版本上運行。屏幕大小和色深度410允許應用程序的定制適合屏幕以及以其最大清晰度來呈現(xiàn)圖片或視頻信息。運動傳感器支持512允許應用程序506將向量和加速信息用作到應用程序506的輸入。通過利用無線外圍設備,或至少將應用程序定制為支持這樣的外圍設備,這樣的無線外圍支持514允許在豐富的上下文中將應用程序的操作的音頻/視覺方面呈現(xiàn)給用戶??梢詸z查和報告的其他配置元素是與媒體呈現(xiàn)相關的硬件和固件,通常是回放支持信息516?;胤胖С值脑乜梢园襟w編碼器/解碼器(編解碼器)、所支持的文件格式、以及傳輸流格式(例如,MPEG2、MPEG4等等)。圖6是為可編程設備創(chuàng)建定制的應用程序的方法600的流程圖。該方法可以尤其適用于但不限于手持式便攜式設備。正如在圖6中所示出的,一些步驟在履行中心服務器 208處執(zhí)行(如在垂直虛線的右邊所示出的),且一些步驟在可編程設備202處執(zhí)行(如在垂直虛線的左邊所示出的)。在框602,可以確定可編程設備202的標準配置的基本配置。也就是說,可以確定在可編程設備上運行的操作系統(tǒng)的類型和版本,并且確定按像素計的標準屏幕大小和色深度。也可以從與出廠的設備的最常見的配置有關的信息收集輸入設備的類型??梢詮闹С终军c確定腳本引擎的當前受支持版本,支持站點也可以是履行中心服務器208。這些標準配置和當前版本可以被用來開發(fā)至少受標準配置設備支持的應用程序的列表。另外,被添加到該列表的每一應用程序也可以包括在應用程序的稍后定制中需要其數(shù)據(jù)的配置項的目錄。在框604,履行中心服務器208可以將該應用程序列表發(fā)送給可編程設備202。在框606,可編程設備202可以呈現(xiàn)具有與該可編程設備的基本配置兼容的可用應用程序的列表的用戶界面,以便允許用戶選擇這些應用程序中的一個(如果需要的話)。在框608,可以使用用戶輸入來接收從可用于在可編程設備上安裝的應用程序的列表選擇應用程序的輸入。在框610,響應于接收到該選擇,可以收集對應于可編程設備的具體配置。在一個實施方式中,可以收集所有可用的信息,但在另一實施方式中,可以僅收集與該應用程序相關的數(shù)據(jù)。例如,在可編程設備202處接收到的應用程序的列表可以包括描述該應用程序的相關配置數(shù)據(jù)的附加數(shù)據(jù)的目錄??梢詸z查其存在性、版本號、大小/速度等等配置的一些元素可以包括外部光傳感器、運動傳感器能力、照相機類型、聲音輸出能力、外圍設備配置、總計非易失性存儲器和可用非易失性存儲器、以及總計易失性存儲器??梢詸z查并報告的其他配置元素是與媒體呈現(xiàn)(通常是回放支持)相關的硬件和固件?;胤胖С值脑乜梢园襟w編碼器/解碼器(編解碼器)、所支持的文件格式、以及傳輸流格式(例如,MPEG2、MPEG4等等)。一旦收集了配置數(shù)據(jù),在框612,可以在可編程設備中構建請求包。請求包可以包括具體配置的各組成元素,至少包括設備標識符、設備類型標識符、所選擇應用程序的標識符、存儲器配置、以及腳本引擎版本標識符(當存在時)。在一些實施方式中,可以在標準 HTTP通用資源定位符(URL)中發(fā)送這一信息的子集,例如可編程設備標識符和腳本引擎版本號。例如,在一些實施方式中,設備標識符或設備類型標識符可以足以確定存儲器配置, 使得可以僅需要將最少的所需信息包括在請求包中。在框614,可以將請求包從可編程設備發(fā)送給履行中心服務器208。在框616,可以在履行中心服務器208處接收請求包??梢詫⒄埱蟀蚱洳糠挚扇芜x地從履行中心發(fā)送給后端編譯器以便完成履行過程。在一種實施方式中,可以在履行過程處準備定制應用程序的準備。在另一實施方式中,驗證請求以便查看可編程設備類型是否是履行中心服務器208所已知的,即是說,可編程設備是否是在已知可編程設備數(shù)據(jù)庫中。如果不是,則可以拒絕該請求,且可以請求關于其配置的附加信息。同樣在框616,履行中心服務器208可以評估該請求在其上到達的網(wǎng)絡連接。在開發(fā)用于可編程設備的定制應用程序時,網(wǎng)絡的帶寬可以被用作一個因子。在網(wǎng)絡尤其在帶寬方面受到限制時,例如,第二代OG)無線網(wǎng)絡或通用分組無線服務(GPRS)無線網(wǎng)絡, 服務器可以包括減少最終定制應用程序的大小的編譯選項。這樣的選項可以在網(wǎng)絡能力的范圍內發(fā)展,使得增強型數(shù)據(jù)速率GSM演化(EDGE)可以包括諸如擴展的幫助文件等更多選項,而諸如HSPDA或WiFi等高速網(wǎng)絡可以包括全色圖形等等。在框618,可以將帶有可編程設備202的具體配置的請求包解析成請求包的各組成元素。在框620,可以根據(jù)可編程設備的具體配置的各元素來配置定制編譯配置。例如, 可以設置或清除用于包括或排除所請求的應用程序中的各插件特征或用于設置所請求的應用程序中的默認預設值的不同編譯器選項。在一種實施方式中,這一過程可以包括用創(chuàng)建帶有與可編程設備的具體配置相對應的具體編譯選項的makefile。在框622,可以通過使用在框620開發(fā)的定制makefile或使用在框620開發(fā)的預設編譯器選項編譯應用程序來創(chuàng)建應用程序的定制版本。可以保存應用程序和定制 makefile兩者,用作具體配置的各元素的檢索索引。這將允許快速地檢索和發(fā)送來自同樣配置的設備的請求,盡管出于多種原因(包括大量的配置在內),可存在其中不保存數(shù)據(jù)的實施方式。在框624,定制應用程序可以被發(fā)送給可編程設備。一旦確認了定制應用程序到可編程設備的遞送,就可以刪除來自后端編譯器或履行中心中的任一個的定制應用程序的所有副本。然而,如以上所描述的,在一些實施方式中,各副本可以被編目和保存。以相似的方式,在接收給定的請求之前,常見的各預期組成元素可以是請求包的預先選擇的組成元素且可以被用來根據(jù)所預測的組成元素來創(chuàng)建定制應用程序版本,然后可以被存儲起來以供包含那些所預測的組成元素的將來的定制應用程序請求之用。例如, 在發(fā)布了腳本引擎的新版本時,可以預測,將來的請求將請求/要求腳本引擎的該版本。因此,對常見設備配置進行預編譯以便支持新版本腳本引擎可以在新請求到來時節(jié)省相當可觀的時間。例如,在請求到達時,可以將請求包的各組成元素與所存儲的所預測的組成元素進行匹配,且匹配這些組成元素的預編譯的定制應用程序可以被發(fā)送給請求可編程設備。在框626,在接收到定制應用程序之后,可以檢查定制首部504以便驗證與被用于創(chuàng)建定制應用程序的組成元素相對應的所選擇的信息匹配于被發(fā)送給履行中心208的那些請求,且檢查它們仍然是有效的。例如,即使所接收的包匹配于該請求的配置數(shù)據(jù),也可以隨后發(fā)生的顯著地改變了配置的改變,例如接收到新腳本引擎。如果定制首部504不充分地匹配當前的配置,則可以取離開框626的‘否’分支進行到框628。即是說,為了使得匹配成功,諸如空閑存儲器等一些元素可以不需要完全匹配。 在此示例中,只要存在足夠的空閑存儲器,在當前配置和響應的配置之間的匹配不需要是完全的。在框628,將不安裝應用程序或者將其推遲,且可選地,可以向用戶告知該失配、生成并發(fā)送新請求、或這兩者。如果被推遲,則可以允許用戶修正該情況,使得可以安裝應用程序,例如釋放所需存儲器。如果定制首部504充分地匹配當前的配置,則可以取離開框626的‘是’分支進行到框630來安裝應用程序。在框630,如果需要,則可以驗證該應用程序,且安裝該應用程序并使之可由用戶執(zhí)行。盡管前述文本陳述了本發(fā)明的眾多不同的實施方式的詳細描述,但應理解,本發(fā)明的范圍由在這一專利的權利要求書的言辭來限定。詳細描述僅應被解釋成示例性的,且不描述本發(fā)明的每一可能的實施方式,這是因為描述每一可能的實施方式即使不是不可能的也是不切實際的??梢允褂卯斍暗募夹g或在這一專利的申請日期之后開發(fā)的技術來實現(xiàn)眾多替代的實施方式,這將仍然落在界定本發(fā)明的權利要求的范圍內。因而,可以在不偏離本發(fā)明的精神和范圍的前提下在此所描述和示出的技術和結構中做出許多修改和變更。因此,應理解,在此描述的方法和裝置僅是說明性的,且不限制本發(fā)明的范圍。
權利要求
1.一種響應于來自可編程設備(300)的請求來創(chuàng)建應用程序的方法(600),包括 確定所述可編程設備(300)的基本配置(602)呈現(xiàn)(606)帶有與所述可編程設備的所述基本配置兼容的可用應用程序的列表的用戶界面(310)接收(608)與從可用應用程序的所述列表選擇以便安裝在所述可編程設備上的應用程序相關的用戶輸入;收集(610)對應于所述可編程設備(300)的具體配置;在所述可編程設備處構建(61 請求包,所述請求包包括所述具體配置的各組成元素,所述組成元素至少包括所選擇應用程序的標識符、腳本引擎版本標識符、以及設備標識符和設備類型標識符中的至少一個;將所述請求包從所述可編程設備發(fā)送(614)給履行中心; 在所述履行中心處接收(616)所述請求包;將帶有所述可編程設備的所述具體配置的所述請求包解析(618)成所述請求包的各組成元素;創(chuàng)建(62 與所述請求包的所述組成元素相對應的所選擇的應用程序的定制版本;以及將所選擇的應用程序的所述定制版本發(fā)送(624)給所述可編程設備。
2.如權利要求1所述的方法,其特征在于,還包括將與所述可編程設備的所述基本配置兼容的可用應用程序的所述列表發(fā)送(604)給所述可編程設備。
3.如權利要求2所述的方法,其特征在于,還包括將所述請求包的至少一部分從所述履行中心發(fā)送給后端編譯器; 根據(jù)所述可編程設備的所述具體配置的各元素來創(chuàng)建(620)定制編譯配置;以及使用所述定制編譯配置來編譯所選擇的應用程序,從而得到針對所述可編程設備的所選擇的應用程序的所述定制版本。
4.如權利要求3所述的方法,其特征在于,創(chuàng)建所述定制編譯配置包括創(chuàng)建帶有與所述可編程設備的所述具體配置相對應的具體編譯選項的makefile。
5.如權利要求3所述的方法,其特征在于,還包括將所選擇的應用程序的所述定制版本遞送(注意,即確認遞送而非發(fā)送624)給所述可編程設備;以及在確認了所選擇的應用程序的所述定制版本的遞送之后,從所述后端編譯器和所述履行中心刪除所選擇的應用程序的所述定制版本的所有副本。
6.如權利要求1所述的方法,其特征在于,創(chuàng)建所選擇的應用程序的所述定制版本包括預先選擇所述請求包的組成元素;根據(jù)所述預先選擇的組成元素創(chuàng)建所選擇的應用程序的所述定制版本;以及存儲所選擇的應用程序的所述定制版本和所述預先選擇的組成元素。
7.如權利要求6所述的方法,其特征在于,將所選擇的應用程序的所述定制版本發(fā)送給所述可編程設備包括將所述請求包的組成元素與所存儲的所預測的組成元素進行匹配;以及向所述可編程設備發(fā)送與匹配所述請求包的所述組成元素的預先選擇的組成元素相對應的所選擇的應用程序的所述定制版本。
8.如權利要求1所述的方法,其特征在于,確定所述可編程設備的所述基本配置包括 確定在所述可編程設備上運行的操作系統(tǒng)的類型和版本;確定按像素計的屏幕大小和色深度; 確定輸入設備類型。
9.如權利要求1所述的方法,其特征在于,收集對應于所述可編程設備的所述具體配置包括確定外部光傳感器; 確定運動傳感器能力; 確定照相機類型; 確定聲音輸出能力; 確定外圍設備配置;確定總計非易失性存儲器和可用非易失性存儲器;以及確定總計易失性存儲器。
10.如權利要求1所述的方法,其特征在于,還包括檢查所選擇的應用程序的所述定制版本的定制首部,所述定制首部包含與被用于創(chuàng)建所選擇的應用程序的所述定制版本的所述組成元素相對應的所選擇的信息;以及確定所選擇的應用程序的所述定制版本匹配對應于所述可編程設備的所述具體配置。
11.如權利要求11所述的方法,其特征在于,還包括在所選擇的應用程序的所述定制版本不匹配對應于所述可編程設備的所述具體配置時推遲安裝。
12.如權利要求11所述的方法,其特征在于,還包括在所選擇的應用程序的所述定制版本匹配所述具體配置時安裝所選擇的應用程序的所述定制版本。
13.如權利要求1所述的方法,其特征在于,收集對應于所述可編程設備的所述具體配置包括從可用應用程序的所述列表提取所需的具體配置數(shù)據(jù)的目錄;以及根據(jù)所述目錄收集所需的具體配置數(shù)據(jù)。
14.如權利要求1所述的方法,其特征在于,還包括在所述可編程設備不處于已知的可編程設備的數(shù)據(jù)庫中時拒絕請求包;以及從所述可編程設備請求附加配置信息。
15.一種支持應用程序的下載的可編程設備,包括 處理單元(302);耦合到所述處理單元的收發(fā)器(304),所述收發(fā)器支持雙向通信; 耦合到所述處理單元的存儲器(312),所述存儲器存儲用于在所述處理單元上執(zhí)行的指令,所述指令實現(xiàn)操作系統(tǒng)(320)、下載系統(tǒng)(320)、以及腳本引擎(316);以及耦合到所述處理單元且受所述操作系統(tǒng)支持的用戶界面(308) (310),其中所述下載系統(tǒng)經由所述收發(fā)器接收適用于所述可編程設備的合格的應用程序的列表,使得所述列表被顯示在所述用戶界面上,從用戶接收與所選擇的應用程序相關的輸入,收集關于所述可編程設備的具體配置信息,發(fā)送帶有所述具體配置信息的對所選擇的應用程序的請求,以及接收適用于所述具體配置信息的所選擇的應用程序的定制版本。
全文摘要
為了容納移動設備上的不同類型和版本的執(zhí)行環(huán)境,來自諸如智能電話或其他移動設備等可編程設備的對應用程序的請求包括與該設備的特性有關的狀態(tài)數(shù)據(jù)??梢耘c請求一起轉發(fā)關于顯示器、存儲器、存儲和/或腳本引擎的信息。在履行服務器處,評估該信息,使得可以自定義地構建或從預先構建的應用程序的資料庫中選擇經適當?shù)卮_定版本和配置的應用程序。這允許用戶推遲升級且仍然接收針對特定的移動設備優(yōu)化的可執(zhí)行程序的適當版本。
文檔編號G06F13/14GK102362272SQ201080014025
公開日2012年2月22日 申請日期2010年3月19日 優(yōu)先權日2009年3月25日
發(fā)明者A·N·費尼洛, A·弗隆, D·蘭格, D·庫瑟馬凱, G·A·惠勒, J·菲蒂, N·麥 申請人:微軟公司