四、Expo的常見問題

常見問題

除了下面的問題,請參閱HashnodeExpo論壇AMA博覽會(huì),了解更多常見問題和答案。

需要多少錢?

Expo是免費(fèi)的。

我們的計(jì)劃是無限期地保持這種方式。

Expo也是開源的,所以你不用擔(dān)心我們能否堅(jiān)持這個(gè)計(jì)劃。

我們最終可能會(huì)為在Expo之上建立的服務(wù)收取費(fèi)用,或者提供某種高級支持和咨詢服務(wù)。

如果Expo是免費(fèi)的,你如何賺錢?

現(xiàn)在,我們不賺錢。我們有一個(gè)小團(tuán)隊(duì),只想在這方面努力,我們保持低開支,大多是自籌資金。只要有人想要使用它,我們就會(huì)在這個(gè)項(xiàng)目上繼續(xù)工作。

我們認(rèn)為,如果我們把Expo做得很好,我們最終可以幫助開發(fā)商賺錢,因?yàn)槲覀兛梢詭椭_發(fā)商削減開支。這可以通過幫助他們從使用他們的軟件的人那里收錢,或者幫助他們在他們的應(yīng)用程序中放置廣告或其他東西。我們還沒有一個(gè)明確的計(jì)劃呢;?我們的首要任務(wù)就是讓Expo變得非常好,并盡可能地受到歡迎。

Expo和React Native有什么區(qū)別?

Expo有點(diǎn)像Rails for React Native。可以為您設(shè)置了很多東西,所以會(huì)使你在正確的開發(fā)途徑上走得會(huì)更快。

使用Expo,您不需要Xcode或Android Studio。您只需使用您熟悉的任何文本編輯器編寫JavaScript(Atom,vim,emacs,Sublime,VS Code,無論您喜歡什么)。您可以在Mac,Windows和Linux上運(yùn)行Expo CLI(我們的命令行工具和Web UI)。

以下是Expo為您提供的一些方便工作的東西:

支持iOS和Android

您可以直接在iOS和Android上使用用Expo編寫的應(yīng)用程序。您不需要為每個(gè)過程單獨(dú)構(gòu)建一個(gè)環(huán)境。只需在iOS或Android(或計(jì)算機(jī)上的模擬器)使用Expo Client APP可以打開任何Expo應(yīng)用程序。

推送通知

推送通知在iOS和Android上開箱即用,使用統(tǒng)一的API。您不必設(shè)置APNS和GCM / FCM或配置ZeroPush或類似的東西。我們認(rèn)為我們已經(jīng)讓它變得如此簡單。

Facebook登入

以前這可能需要很前時(shí)間才能自行設(shè)置,但現(xiàn)在您應(yīng)該能夠在10分鐘或更短時(shí)間內(nèi)在Expo上使用它。

熱更新

只需單擊Expo Dev Tools中的Publish即可在幾秒鐘內(nèi)更新所有Expo應(yīng)用程序,你不需要設(shè)置任何東西。如果您不想使用Expo,則可以使用Microsoft Code Push等方案也是可以的。

資源(附件)管理

圖像,視頻,字體等都通過互聯(lián)網(wǎng)動(dòng)態(tài)分發(fā)。這意味著它們可以即時(shí)更新,并且可以即時(shí)更改。Expo內(nèi)置的資源管理系統(tǒng)負(fù)責(zé)將您手上的所有資產(chǎn)上傳到CDN,以便他們能夠給任何人快速加載。

沒有Expo,正常的做法是將資源捆綁到您的應(yīng)用程序中,這意味著您無法更改它們。或者是您需要自己管理將資源放在CDN上。

更新到新的React Native版本更容易

我們每隔幾周就會(huì)發(fā)布一次新的Expo。如果您愿意,依然可以使用舊版本的React Native,或升級到新版本,而無需擔(dān)心重建應(yīng)用程序的二進(jìn)制文件。您只需要做好升級JavaScript就行。

請注意:Expo沒有原生模塊......

關(guān)于Expo的最大限制是,你不能在沒有detach使用ExpoKit的情況下添加自己的原生模塊。繼續(xù)閱讀下一個(gè)問題以獲得完整的解釋。

如何向Expo項(xiàng)目添加自定義本機(jī)代碼?

TL; DR你可以做到,但大多數(shù)人都不需要。

標(biāo)準(zhǔn)Expo項(xiàng)目不支持自定義本機(jī)代碼,包括需要自定義本機(jī)組件的第三方庫。在Expo項(xiàng)目中,您只能編寫純JS。Expo是按照這種方式設(shè)計(jì)的,我們認(rèn)為這樣做更好。

我們的SDK中,我們?yōu)槟峁┝舜罅砍S玫母哔|(zhì)量模塊。我們建議盡可能多地使用JS,因?yàn)樗梢粤⒓床渴鸾o所有用戶并在兩個(gè)平臺(tái)上工作,并且將始終繼續(xù)受益于Expo SDK更新。特別是UI組件,幾乎是用JS編寫的最好的選擇。

但是,如果你需要一些非常自定義的東西 - 比如即時(shí)視頻處理或?qū)λ{(lán)牙無線電的低級別控制來進(jìn)行固件更新 - 我們確實(shí)有早期/ alpha支持在本機(jī)Xcode和Android Studio項(xiàng)目中使用Expo。

Expo與開發(fā)WEB的React相似嗎?

Expo和React Native與React類似。但您將不得不學(xué)習(xí)一些新的組件(例如,View而不是div),編寫移動(dòng)應(yīng)用程序與網(wǎng)站有很大不同;?你在屏幕和不同的導(dǎo)航器方面更多地考慮而不是單獨(dú)的網(wǎng)頁,但是如果你正在編寫傳統(tǒng)的Android或iOS應(yīng)用程序,那么你的了解的就會(huì)更多。

我如何分享我的Expo項(xiàng)目?我可以將它提交到應(yīng)用商店嗎?

分享您的Expo項(xiàng)目的最快方式是發(fā)布它。您可以通過單擊Expo Dev Tools中的“發(fā)布”或expo publish在項(xiàng)目中運(yùn)行來完成此操作,這將為您的應(yīng)用提供了一個(gè)網(wǎng)址, 您可以與裝有 Expo?Client 的任何Android用戶共享此網(wǎng)址,他們可以立即打開您的應(yīng)用。了解更多關(guān)于發(fā)布的Expo。要與iOS用戶共享,您可以使用Apple TestFlight。

準(zhǔn)備就緒后,您可以創(chuàng)建一個(gè)獨(dú)立的應(yīng)用程序(.ipa和.apk),以便提交給Apple和Google的應(yīng)用程序商店。Expo將為您構(gòu)建二進(jìn)制文件;?請參閱構(gòu)建獨(dú)立應(yīng)用程序。Apple每年收費(fèi)99美元,在App Store中發(fā)布您的應(yīng)用程序,Google會(huì)向Play商店收取25美元的一次性費(fèi)用。

為什么Expo會(huì)使用React Native的分支?

每個(gè)Expo SDK版本都對應(yīng)一個(gè)React Native版本。例如,SDK 19對應(yīng)于React Native 0.46.1。對于給定的SDK版本及其相應(yīng)的React Native版本,fork之間通常沒有區(qū)別,但偶爾我們會(huì)發(fā)現(xiàn)問題或想要包含一些尚未合并到版本中的代碼,我們會(huì)將其放入我們的版本分叉中。使用fork還可以讓人們更容易驗(yàn)證他們是否正在使用的在Expo SDK版本中的React Native版本,例如:如果您的SDK版本設(shè)置為19.0.0,那么您應(yīng)該使用https://github.com/expo/react-native/archive/sdk-19.0.0.tar.gz。

如何使用Expo運(yùn)行現(xiàn)有的React Native項(xiàng)目?

現(xiàn)在,最簡單的方法是使用expo init(使用Expo CLI)創(chuàng)建一個(gè)新項(xiàng)目,然后從現(xiàn)有項(xiàng)目中復(fù)制所有JavaScript源代碼,然后使用yarn add您擁有的庫依賴項(xiàng)。

如果您具有與Expo SDK公開的內(nèi)容相似的本機(jī)模塊依賴性,則此過程大概要幾分鐘(不包括npm install時(shí)間)。如果您遇到任何問題,請隨時(shí)向我們提問。

如果您使用的是不受Expo支持的本機(jī)庫,您將需要重寫應(yīng)用程序的某些部分以使用屬于Expo的類似API,或者您可能無法將所有部分都添加到Expo新項(xiàng)目,但是大部分都可以!

注意我們曾經(jīng)維護(hù)過一個(gè)工具exp convert,但它目前沒有工作或維護(hù),所以上面的方法是讓現(xiàn)有的React Native項(xiàng)目在Expo上運(yùn)行的最佳方法

如何刪除我發(fā)布的Expo項(xiàng)目?

Expo應(yīng)用程序的默認(rèn)隱私設(shè)置是unlisted,除非您與他們共享鏈接,否則沒有人可以找到您的應(yīng)用程序。

如果您確實(shí)希望發(fā)布的應(yīng)用程序“未發(fā)布”,請查看我們的高級發(fā)布渠道指南,其中介紹了如何回滾。

什么是Exponent,它與Expo有什么不同?

Exponent是Expo項(xiàng)目的原始名稱。您可能偶爾會(huì)在博客文章或代碼或文檔中遇到一些舊的引用。他們是一樣的東西;?我們只是縮短了名字。

Expo應(yīng)用程序支持哪個(gè)版本的Android和iOS?

Expo支持Android 5+和iOS 10+。

我可以在Expo上使用Node.js包嗎?

如果程序包依賴于Node標(biāo)準(zhǔn)庫API,則無法將其與Expo一起使用。Node標(biāo)準(zhǔn)庫是一組主要在C ++中實(shí)現(xiàn)的功能,它將函數(shù)公開給不屬于JavaScript語言規(guī)范的JavaScript,例如讀寫文件系統(tǒng)的能力。React Native,或且通過擴(kuò)展Expo,不包括Node標(biāo)準(zhǔn)庫,就像Chrome和Firefox不包含它一樣。JavaScript是一種在許多環(huán)境中使用的語言,從移動(dòng)應(yīng)用程序(在我們的例子中)到服務(wù)器,當(dāng)然還有在網(wǎng)站上。這些上下文都包含它們自己的運(yùn)行時(shí)環(huán)境,它們向JavaScript公開不同的API,具體取決于上下文中有意義的內(nèi)容。

作為旁注,一些Node標(biāo)準(zhǔn)庫API不依賴于C ++擴(kuò)展,而是可以直接在JavaScript中實(shí)現(xiàn),例如urlassert。如果您希望使用的程序包僅依賴于這些Node API,則可以從npm安裝它們,該程序包將起作用。

我可以在Expo中使用Relay框架嗎?

您可以!更新您.babelrc的新Expo項(xiàng)目到以下內(nèi)容:

{"presets":["babel-preset-expo",{"plugins":["./pathToYourBabelRelayPlugin/babelRelayPlugin"]}],"env":{"development":{"plugins":["transform-react-jsx-source"]}}};

./pathToYourBabelRelayPlugin用你的Relay插件的路徑替換。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容