已經(jīng)使用過React Native呈队?
本指南旨在為已經(jīng)使用過React Native的開發(fā)人員提供有關(guān)使用Expo時將遇到的一些關(guān)鍵概念,資源和差異的快速概述唱歧。
什么是Expo宪摧?
Expo提供了一個共享的本機運行時,因此您不需要編寫本機代碼颅崩,而是專注于使用JavaScript編寫React應(yīng)用程序几于。您不必?fù)?dān)心iOS或Android特定設(shè)置,甚至無需打開Xcode沿后。Expo擁有自己的工作流程沿彭,包括Expo CLI(命令行界面)和Expo Dev Tools(Web UI),使開發(fā)和部署變得簡單尖滚。
如果您曾經(jīng)升級過React Native或本機模塊膝蜈,那么您只需更改版本號即可享受Expo為您無縫執(zhí)行此操作的能力锅移。
Expo通過提供由團隊維護的其他經(jīng)過實戰(zhàn)考驗的模塊擴展了React Native平臺。這意味著您花費更少的時間來構(gòu)建您的應(yīng)用饱搏。
如果您經(jīng)歷過不得不升級模塊或安裝類似 react-native-maps的麻煩非剃,那么當(dāng)事情正常時,您會感激不盡推沸。
Expo還提供OTA(空中下載)熱更新和推送通知服務(wù)备绽。
如果你曾經(jīng)遇到過在你的應(yīng)用程序中發(fā)現(xiàn)拼寫錯誤并且必須等待Apple批準(zhǔn)更改的情況,你會欣賞OTA更新 - 這些更改會在你運行時立即出現(xiàn)expo publish鬓催!您也不僅限于文本肺素,這也適用于圖像和配置更新等資產(chǎn)!
無需將應(yīng)用重新構(gòu)建或重新部署到App and Play商店宇驾。如果您之前使用過倍靡,那就像Code Push一樣。但是课舍,還是有一些限制塌西,在這里閱讀這些。
Expo提供了一個我們稱之為manifest的共享配置文件筝尾。通常捡需,您需要更新Xcode plist或Android Studio xml文件以處理更改。例如筹淫,如果您想鎖定屏幕方向站辉,更改圖標(biāo),自定義啟動畫面等损姜,或添加/刪除您在app.json?里配置執(zhí)行操作的權(quán)限饰剥。
您可以在app.json設(shè)置在Xcode / plist文件或Android studio / xml文件的配置。例如摧阅,如果要鎖定方向捐川,更改圖標(biāo),自定義初始屏幕逸尖,添加/刪除權(quán)限 (在獨立應(yīng)用程序中),配置Google地圖和其他服務(wù)的密鑰瘸右,您可以在app.json中設(shè)置娇跟。請參閱此處的指南。
通過Expo太颤,您可以在通過Expo Client(可在App / Play商店中購買)的任何地方與世界任何地方的任何人共享您的應(yīng)用程序苞俘。掃描二維碼,或輸入一個電話號碼龄章,我們會向您發(fā)送一個鏈接吃谣,該鏈接會立即將您的應(yīng)用加載到您的設(shè)備上乞封。
您無需通過iTunes連接注冊多個外部測試人員,您可以輕松下載Expo客戶端應(yīng)用程序岗憋,并立即在手機上安裝工作版本肃晚。
我們討論了我們可以在其中設(shè)置權(quán)限的app.json,包括Permissions API仔戈。 app.json可以設(shè)置在由Android獨立應(yīng)用程序用于相機訪問关串,地理位置,指紋等监徘。另一方面晋修,API權(quán)限用于在運行時請求和驗證訪問權(quán)限。它提供了一個簡單的API凰盔,可以詢問用戶推送通知墓卦,位置,相機户敬,錄音和聯(lián)系人落剪。
Expo如何運作?
由于您使用Javascript編寫代碼山叮,我們將其捆綁并從S3提供著榴。每次發(fā)布應(yīng)用時,我們都會更新這些資源屁倔,然后將其推送到您的應(yīng)用脑又,這樣您就可以獲得最新版本。
在Expo上發(fā)展
默認(rèn)情況下锐借,我們通過tunnel服務(wù)從Expo CLI提供應(yīng)用程序(我們目前使用ngrok) - 這意味著您不必將設(shè)備連接到計算機问麸,甚至不必連接到同一個房間或國家/地區(qū)(或者星球?我想它應(yīng)該可以在太空中工作)作為開發(fā)機器钞翔,你仍然可以重新加載严卖,使用熱模塊重新加載,啟用遠(yuǎn)程JS調(diào)試布轿,以及通常使用React Native可以做的所有事情哮笆。有一點需要注意的是,使用tunnel比使用LAN地址或本地主機要慢一些汰扭,所以如果可以的話稠肘,應(yīng)該使用LAN或localhost。了解如何在Expo CLI中進行配置萝毛。
Expo將您的設(shè)備日志流式傳輸?shù)紼xpo CLI和Expo Dev Tools项阴,因此您無需運行adb logcat或與iOS等效 -?console.log / warn /error來自任何連接到您的應(yīng)用程序的設(shè)備的消息,將自動顯示在您的終端和Expo Dev Tools中笆包。
Expo不能做什么
有時环揽,Expo不提供對您可能需要的本機模塊或API的訪問權(quán)限略荡。在這種情況下,您可以eject?并使用ExpoKit歉胶。這允許您繼續(xù)使用Expo的基礎(chǔ)汛兜,但允許您創(chuàng)建和使用任何自定義本機模塊。
部署到App / Play商店
當(dāng)你準(zhǔn)備好了跨扮,你可以運行expo build:ios或者expo build:android序无,Expo將構(gòu)建你的應(yīng)用程序并輸出你需要提交的二進制文件的鏈接。然后你就可以使用Application Loader for iOS之類的東西衡创,或直接上傳適用于Android的APK帝嗡。
如果您希望在自己的計算機上構(gòu)建應(yīng)用程序,可以按照以下步驟操作璃氢。
有用的工具和資源
Expo Snack
直接從瀏覽器測試和共享Expo功能的最佳方式哟玷。將手機指向QR碼,您就可以在瀏覽器中構(gòu)建沙箱環(huán)境并直接在設(shè)備上進行測試一也。
如果有什么你不理解或希望了解更多巢寡,這是一個很好的起點。
從Expo團隊或社區(qū)獲得幫助的最快方式
Expo Client和SDK都是開源的椰苟。如果您有什么想要解決的問題抑月,或想出我們?nèi)绾螌崿F(xiàn)我們的原生模塊,歡迎您自己查看代碼舆蝴!
有用的命令
在Expo中開發(fā)時谦絮,您可以選擇使用命令行工具。以下是我們的一些朋友最喜歡的命令和工作流程:
expo start -c --localhost --ios
啟動expo服務(wù)器洁仗,清除緩存层皱,僅在localhost上加載并在iOS模擬器上打開
expo start --tunnel
啟動expo服務(wù)器(不清除緩存)并在隧道上運行expo,以便與任何人共享赠潦!
expo send -s 2245551234
發(fā)送鏈接到朋友的電話號碼叫胖,這樣他們就可以在手機上查看我正在處理的內(nèi)容