1. 程式人生 > >Expo大作戰--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型註意點等

Expo大作戰--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型註意點等

文本 問題 span cli doc 包括 scrip 界面 生命周期

技術分享圖片

簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo依賴,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網

我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732981

【之前我寫過一些列關於expo和rn入門配置的東i西,大家可以點擊這裏查看:從零學習rn開發】

相關文章:

Expo大作戰--什麽是expo,如何安裝expo clinet和xde,xde如何使用

Expo大作戰--expo的生命周期,expo社區交流方式,expo學習必備資源,開發使用expo時關註的一些問題

接下來就開始擼碼


已經使用React Native?

本指南旨在為那些已經使用React Native的開發者提供一些關鍵概念,資源和使用Expo時遇到的差異的簡要概述。

什麽是expo?


Expo提供了一個共享的本地運行時,所以你不用編寫本地代碼,你專註於用JavaScript編寫你的React應用程序。您不必擔心iOS或Android的特定設置,甚至不必打開Xcode。 Expo擁有自己的工作流程,包括一個名為XDE的應用程序和命令行界面,使開發和部署變得輕松。

如果您曾升級過React Native或本地模塊,只需更改版本號,即可享受expo無縫完成此功能的功能。

Expo通過提供由團隊維護的額外的經過測試的模塊擴展了React Native平臺

。這意味著你花更少的時間配置和更多的時間建立。

如果你曾經經歷過升級模塊或安裝諸如react-native-maps之類的問題,那麽當事情正常時,你會明白的。

expo還提供OTA(空中下載||熱更新)更新和推送通知服務。

如果您曾經遇到過在應用程序中發現拼寫錯誤並需要等待Apple批準更改的情況,那麽您會欣賞OTA更新 - 只要運行exp發布,就會顯示這些更改!你也不限於文本,這也適用於圖像和配置更新等資產!

無需重新構建或重新部署您的應用到應用和Play商店。這就像Code Push,如果你以前使用過。但是有一些限制。閱讀有關這裏的人。

Expo提供了一個我們稱之為清單的共享配置文件。通常,您需要更新Xcode plist或Android Studio xml文件以處理更改。例如,如果你想鎖定屏幕方向,改變你的圖標,自定義你的啟動畫面或添加/刪除權限,你會在app.json中做一次,它將適用於兩者

您通常在Xcode / plist文件或Android studio / xml文件中執行的配置通過app.json處理。例如,如果您想要鎖定方向,更改圖標,自定義初始屏幕,添加/刪除權限和權利(在獨立應用程序中),請為Google地圖和其他服務配置密鑰,您可以在app.json中進行設置。請參閱此處的指南。

借助expo,您可以在expo客戶端(可在App / Play商店中使用)工作的同時,與世界上任何地方的任何人分享您的應用程序。掃描二維碼,或輸入電話號碼,我們會向您發送一個鏈接,將您的應用程序立即加載到您的設備上。

無需通過iTunes連接註冊幾個外部測試人員,您可以輕松讓他們下載expo客戶端應用程序,並立即在手機上提供工作版本。

我們討論我們在app.json中設置的權限,但也有Permissions Api。 app.json中的權限旨在被Android獨立應用程序用於相機訪問,地理定位,指紋等。另一方面,權限Api用於在運行時請求和驗證訪問權限。它提供了一個簡單的API來詢問您的用戶推送通知,位置,相機,錄音和聯系人。

expo如何運作?


由於您使用Javascript編寫代碼,因此我們將其捆綁在一起並在S3中提供。每當您發布您的應用程序時,我們都會更新這些資源,然後將它們推送到您的應用程序,以便始終獲得最新版本。

在expo上開發


應用程序默認通過隧道服務從我們的exp / XDE提供服務(我們目前使用ngrok) - 這意味著您不必將設備連接到計算機,甚至不必連接到同一個房間或國家(或行星?我猜它應該從空間開始)作為開發機器,並且您仍然可以實時重新加載,使用熱模塊重新加載,啟用遠程JS調試,以及您可以通過React Native正常執行的所有事情。有一點需要註意的是,使用隧道比使用局域網地址或本地主機要慢一點,所以如果可以的話,你應該使用局域網或本地主機。看看如何在exp / XDE中配置它。

Expo將您的設備日誌傳輸到exp和XDE,因此您不需要運行adb logcat或iOS等價物 - 來自任何連接到您的應用的設備的console.log / warn /錯誤消息將自動顯示在您的exp / XDE日誌窗口。

expo不能做什麽

  • 有時expo不提供您可能需要的本地模塊或API的訪問權限。在這種情況下,您可以分離並使用ExpoKit。這使您可以繼續使用Expo的基礎,但允許您創建和使用任何自定義本機模塊。
  • 閱讀更多關於分離的信息

部署到App / Play商店


當你準備好後,你可以運行exp build:ios或者exp build:android和Expo會構建你的應用並輸出一個鏈接到你需要提交的二進制文件。然後,您可以使用類似Application Loader for iOS的應用程序,或直接上傳適用於Android的APK。

如果您更願意在自己的機器上構建應用程序,則可以按照以下步驟操作。

有用的工具和資源

  • Expo Snack

  直接從您的瀏覽器測試和分享Expo功能的最佳方式。將手機指向QR代碼,您可以在瀏覽器中創建沙箱環境,並直接在設備上進行測試。

  • Expo Docs

  如果有什麽你不明白或想了解更多的信息,這是一個很好的開始。

  • Expo Forums

  從expo團隊或社區獲得幫助的最快途徑

  • Expo Github

  Expo Client和SDK都是開源的。如果您想解決某些問題,或者想知道我們如何實現我們的本地模塊,歡迎您親自查看代碼!

  • Expo Slack

Useful Commands

在expo開發時,您可以選擇使用命令行工具。以下是我們的一些朋友最喜歡的命令和工作流程:

  1. exp start -c --localhost --ios
  2. 啟動expo服務器,清除緩存,只加載本地主機並在iOS模擬器上打開
  3. exp start --tunnel
  4. 啟動expo服務器(不要清除緩存)並在隧道上運行expo,以便與任何人分享!
  5. exp發送2245551234
  6. 發送一個鏈接到朋友的電話號碼,以便他們可以在手機上查看我正在處理的內容

為什麽不用expo(Why not Expo?


expo尚未準備好用於所有應用程序。有很多情況下,目前的限制可能不適合您的項目。本文檔的目的是概述其中的一些情況,以便您最終不會在expo上構建應用程序,並且在遇到障礙時無法克服障礙,無需分離到ExpoKit或彈出使用React Native沒有expo。我們正在計劃或積極致力於構建下列所有功能的解決方案,如果您認為缺少任何內容,請通過張貼到我們的功能請求委員會來提請我們註意。

Expo應用程序不支持後臺代碼執行(當應用程序沒有預先安裝或設備正在睡眠時運行代碼)。這意味著您不能使用後臺地理位置,在後臺播放音頻,在後臺處理推送通知等等。這是一個正在進行的工作。

Expo支持很多設備API(查看邊欄中的“SDK API參考”),但並非所有iOS和Android API都可以在Expo中使用:需要藍牙?對不起,我們還沒有建立它的支持的WebRTC?不完全的。我們不斷添加新的API,因此如果我們現在沒有您需要的東西,您可以使用ExpoKit或關註我們的博客,查看我們每月SDK更新的發布說明。

如果你需要保持你的應用程序(包)的規模非常小,expo可能不是最好的選擇。 iOS上的expo應用大小約為25mb,Android大約為20mb。這是因為expo包括一堆API,而不管你是否使用它們 - 這可以讓你推動空氣更新(熱更新)以使用新的API,但是以二進制大小為代價。我們將在未來對此進行定制,以便您可以減小二進制文件的大小。

如果您知道您希望使用特定的推送通知服務(例如OneSignal)而不是expo的推送通知服務/ API,則您需要使用ExpoKit或React Native,而無需使用expo。

expo團隊,真誠的向我們列出了expo的局限性,以及expo的有點,我們在項目選型的時候,也需要仔細斟酌!


下一張繼續介紹,這一篇主要介紹了:針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型註意點等!歡迎大家關註我的微信公眾號,這篇文章是否被大家認可,我的衡量標準就是公

眾號粉絲增長人數。歡迎大家轉載,但必須保留本人博客鏈接!

技術分享圖片

Expo大作戰--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型註意點等