為了保證應(yīng)用程序的合法性和安全性,蘋(píng)果公司對(duì)每一款應(yīng)用程序設(shè)定了嚴(yán)格的審查制度。每一個(gè)軟件在發(fā)布之前都會(huì)經(jīng)歷一段時(shí)間的機(jī)器或人工審核階段。這個(gè)時(shí)間短則幾天,多達(dá)數(shù)周。對(duì)于敏捷軟件開(kāi)發(fā)團(tuán)隊(duì)而言,他們經(jīng)常面臨上一個(gè)版本還在審查中,一個(gè)新的版本已經(jīng)完成修改的情況。為了解決如此尷尬的局面,畢業(yè)于 MIT的Matt Arbesfeld聯(lián)合其好友設(shè)計(jì)了AppHub,使得面向iOS系統(tǒng)的React Native應(yīng)用能夠快速更新。接下來(lái),本文就對(duì)AppHub進(jìn)行簡(jiǎn)要介紹。
首先,作為Facebook在React.js Conf 2015會(huì)議上推出的項(xiàng)目,React Native利用開(kāi)源JavaScript庫(kù)和React.js進(jìn)行iOS和Android原生應(yīng)用的開(kāi)發(fā)。其優(yōu)勢(shì)在于提高了代碼和模塊的可重用性,并使得代碼從服務(wù)器端動(dòng)態(tài)更新成為可能。目前,F(xiàn)acebook已經(jīng)將React Native用于生產(chǎn)環(huán)境,并將其進(jìn)行開(kāi)源,代碼依托在GitHub中。
正是基于React Native的諸多特性,AppHub實(shí)現(xiàn)了快速更新React Native應(yīng)用的功能。那么,究竟如何利用AppHub服務(wù)實(shí)現(xiàn)應(yīng)用的快速更新呢?首先,應(yīng)用開(kāi)發(fā)人員需要下載并解壓用于iOS的AppHub SDK,并將其添加到應(yīng)用程序中。具體做法為:把下載的AppHub.framework放入到Xcode項(xiàng)目;選擇“Copy items to destination's group folder”復(fù)選框;在Link Binary With Library的編譯階段添加libz.dylib;把應(yīng)用連接到AppHub。接下來(lái),開(kāi)發(fā)人員就可以不斷的使用dashboard或者REST API把更新發(fā)送到AppHub服務(wù)器中。
在AppHub中,開(kāi)發(fā)人員為每一個(gè)移動(dòng)應(yīng)用程序都創(chuàng)建了一個(gè)App。這個(gè)App擁有唯一的應(yīng)用ID,用來(lái)配置SDK。此外,該App會(huì)保留移動(dòng)應(yīng)用的多個(gè)版本。開(kāi)發(fā)人員利用AppHub的dashboard可以對(duì)這些版本進(jìn)行配置和部署。服務(wù)器自動(dòng)探測(cè)App的配置,把新的代碼替換到到應(yīng)用中,從而實(shí)現(xiàn)客戶端應(yīng)用的自動(dòng)更新。目前,AppHub所支持客戶端操作系統(tǒng)為iOS 8.0+,所支持React Native庫(kù)的版本為v0.7.0+。另外,就開(kāi)發(fā)者所關(guān)心的AppHub是否是否被蘋(píng)果公司所允許這一問(wèn)題,AppHub官網(wǎng)表示,蘋(píng)果公司在開(kāi)發(fā)者協(xié)議里特別允許了這種做法。本質(zhì)上,AppHub應(yīng)用和React Native應(yīng)用基本相同。而React Native應(yīng)用已被證明是可以被蘋(píng)果所接受的。因此,AppHub這種做法肯定也會(huì)被蘋(píng)果公司所接受。