簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話很少說,接下來你看到內容,講所有來與官網css
我猜去所有機翻+我的修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流羣:597732981html
【以前我寫過一些列關於expo和rn入門配置的東i西,你們能夠點擊這裏查看:從零學習rn開發】node
相關文章:react
Expo大做戰(一)--什麼是expo,如何安裝expo clinet和xde,xde如何使用android
Expo大做戰(二)--expo的生命週期,expo社區交流方式,expo學習必備資源,開發使用expo時關注的一些問題ios
Expo大做戰(三)--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的侷限性,開發時項目選型注意點等git
Expo大做戰(四)--快速用expo構建一個app,expo中的關鍵術語github
Expo大做戰(五)--expo中app.json 文件的配置信息json
Expo大做戰(六)--expo開發模式,expo中exp命令行工具,expo中如何查看日誌log,expo中的調試方式react-native
Expo大做戰(七)--expo如何使用Genymotion模擬器
Expo大做戰(八)--expo中的publish以及expo中的link,對link這塊東西沒有詳細看,你們能夠來和我交流
接下來就開始擼碼
使用app.json進行配置
app.json是配置應用程序中不屬於代碼的部分的前提。它位於package.json旁邊項目的根目錄下。它看起來像這樣:{ "expo": { "name": "My app", "slug": "my-app", "sdkVersion": "25.0.0", "privacy": "public" } }
app.json以前被稱爲exp.json,但爲了與Create React Native App保持一致,它已被合併到一個文件中。若是您將應用程序從使用exp.json轉換爲app.json,則只需在app.json的根目錄中添加一個「expo」鍵做爲全部其餘鍵的父項。
來自app.json的大多數配置均可以在運行時經過Expo.Constants.manifest從JavaScript代碼訪問。諸如密鑰之類的敏感信息被刪除。有關如何將任意配置數據傳遞到您的應用程序的信息,請參閱下面的「額外」鍵。
如下是app.json中「expo」鍵下可用的屬性列表:
name -名稱
必須的,您的應用程序的名稱,由於它在expo和您的主屏幕上都顯示爲獨立應用程序。
description--描述
簡短描述您的應用是什麼以及爲何它很棒。
slug
必須的。用於發佈的友好網址名稱。例如:expo.io/@your-username/slug。
privacy--隱私
公開或不公開。若是未提供,則默認爲不公開。將來,私人將獲得支持。未列出隱藏搜索結果的經驗。有效值:'public','unlisted'
sdkVersion
必須的。expo sdkVersion運行該項目。這應該與package.json中指定的版本一致。
version
您的應用程序版本,可使用您喜歡的任何版本控制方案。
platforms--平臺
您的項目明確支持的平臺。若是未指定,則默認爲[「ios」,「android」]。
githubUrl
若是您想在Github上分享您的應用程序的源代碼,請在此輸入存儲庫的URL,並將其連接到您的expo項目頁面。
orientation--方向
使用縱向或橫向將您的應用鎖定到特定的方向。默認爲無鎖。有效值:'默認','肖像','風景'
primaryColor
在Android上,這將決定多任務器中您的應用程序的顏色。目前這不在iOS上使用,但它可能在未來用於其餘目的。 6個字符長的十六進制顏色字符串,例如:'#000000'
icon--圖標
本地路徑或遠程網址映射到您的應用程序圖標使用的圖像。咱們建議您使用1024x1024的png文件。此圖標將顯示在主屏幕上和expo應用程序中。
notification--通知
遠程(推送)通知的配置。
- icon--圖標
- 本地路徑或遠程網址做爲圖標用於推送通知的圖像。 48x48 png灰度與透明度。
- color--顏色
- 當推送通知圖像出如今通知托盤中時,顏色爲淺色。 6個字符長的十六進制顏色字符串,例如:'#000000'
- androidMode
- 單獨顯示每一個推送通知(默認)或摺疊爲一個(摺疊)。有效值:'default','collapse'
- androidCollapsedTitle
- 若是androidMode設置爲摺疊,則此標題用於摺疊的通知消息。例如:'#{unread_notifications}new interactions'。
loading--加載載
已刪除:改成使用飛濺。用戶在打開應用程序時看到的加載屏幕的配置,以及獲取和緩存分發包和資產的過程。
- icon--圖標
- 本地路徑或遠程URL到啓動應用程序時顯示的圖像。圖像大小和縱橫比取決於您。必須是.png。
- exponentIconColor
- 若是沒有圖標,咱們將顯示expo標誌。您能夠選擇白色和藍色。有效值:'white','blue'
- exponentIconGrayscale
- 與exponentIconColor相似,但反指示它是灰度(1)仍是不是(0)。[Similar to
exponentIconColor
but instead indicate if it should be grayscale (1
) or not (0
).]- backgroundImage--背景圖
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- backgroundColor--背景顏色
- 填充加載屏幕背景的顏色6個字符長的十六進制顏色字符串,例如:'#000000'
- hideExponentText
- 默認狀況下,expo在加載屏幕底部顯示一些文字。將其設置爲true以禁用。
APPKEY
默認狀況下,Expo將查找以AppRegistry註冊爲主要的應用程序。若是你想改變這個,你能夠在這個屬性中指定名字。
androidStatusBarColor
已過期。改用androidStatusBar。 6個字符長的十六進制顏色字符串,例如:'#000000'
androidStatusBar
Android狀態欄的配置。
- barStyle
- 配置狀態欄圖標以使其具備淺色或深色。有效值:「light-content」,「dark-content"
- backgroundColor--背景顏色
- Android狀態欄的配置。 6個字符長的十六進制顏色字符串,例如:'#000000'
androidShowExponentNotificationInShellApp
使用刷新按鈕和調試信息向獨立應用程序添加通知。
scheme--方案
僅限獨立應用程序。連接到您的應用程序的URL模式。例如,若是咱們將其設置爲「demo」,then demo:// URLs would open your app when tapped. String beginning with a letter followed by any combination of letters, digits, 」+」, 」.」 or 」-」
[僅限獨立應用程序。連接到您的應用程序的URL模式。例如,若是咱們將其設置爲「演示」,則演示:// URL會在點按時打開您的應用。以字母開頭的字符串,後跟字母,數字,「+」,「。」或「 - 」的任意組合]
entryPoint--入口點
您的主JavaScript文件的相對路徑。
extra--額外
任何額外的領域,你想傳遞給你的經驗。值可經過Expo.Constants.manifest.extra訪問(閱讀更多)
- rnCliPath
- packagerOpts
- ignoreNodeModulesValidation
- nodeModulesPath
IOS
僅限獨立應用程序。 iOS獨立應用程序特定配置
- bundleIdentifier
- iOS獨立應用程序的包標識符。你作了它[You make it up],但它須要在App Store上是惟一的。看到這個StackOverflow的問題。適用於您的應用的iOS套件標識符表示法惟一名稱。例如,host.exp.exponent,其中exp.host是咱們的域名,Expo是咱們的應用程序。
- buildNumber
- 內置iOS版獨立應用的編號。必須是一個與Apple的CFBundleVersion格式相匹配的字符串。
- icon--圖標
- 本地路徑或圖像的遠程URL,用於iOS上您應用的圖標。若是指定,則會覆蓋頂層圖標鍵。使用符合Apple界面指南的圖標的1024x1024圖標,包括顏色配置文件和透明度。expo將產生其餘所需的尺寸。此圖標將顯示在主屏幕上和世博會應用程序中。
- merchantId--MERCHANTID
- 商家ID用於Apple Pay在您的獨立應用程序中使用。
- appStoreUrl
- 若是您在那裏部署了應用程序,則能夠在Apple App Store上找到您的應用的URL。若是您的應用程序是公開的,這用於連接到您的expo項目頁面上的商店頁面。
- config--配置
- branch--分支
- 分支鍵掛鉤分支鏈接服務。
- apiKey
- 您的分支API密鑰
- usesNonExemptEncryption
- 將獨立ipa的Info.plist中的ITSAppUsesNonExemptEncryption設置爲給定的布爾值。
- googleMapsApiKey
- 適用於您的獨立應用的Google地圖iOS SDK密鑰。
- googleSignIn
- Google Sign-In iOS SDK密鑰適用於您的獨立應用程序。
- reservedClientId
- 保留的客戶端ID URL方案。能夠在GoogeService-Info.plist中找到。
- isRemoteJSEnabled
- 若是設置爲false,您的獨立應用程序將永遠不會下載任何代碼,而且只會使用本地捆綁在設備上的代碼。在這種狀況下,您的應用的全部更新都必須經過Apple審覈提交。默認爲true。 (請注意,這不適用於ExpoKit項目)
- loadJSInBackgroundExperimental
- 若是爲true,那麼您的獨立應用程序將當即運行其緩存的JS束(若是存在),並在後臺請求新束。
- supportsTablet
- 不管您的獨立iOS應用程序是否支持平板電腦屏幕尺寸。默認爲false。
- isTabletOnly
- 若是爲true,表示您的獨立iOS應用程序不支持手機,而且僅支持平板電腦。
- infoPlist
- 將任意配置字典添加到您的獨立應用的原生Info.plist中。在全部其餘expo特定配置以前應用。沒有其餘的驗證被執行,因此使用這個須要你本身承擔App Store拒絕的風險。
- associatedDomains
- 包含獨立應用的關聯域的數組。
- usesIcloudStorage
- 指示應用程序是否使用iCloud Storage for DocumentPicker的布爾值。有關詳細信息,請參閱DocumentPicker文檔。
- splash
- 用於獨立iOS應用程序的加載和啓動屏幕的配置。
- backgroundColor--背景顏色
- 填充加載屏幕背景的顏色6個字符長的十六進制顏色字符串,例如:'#000000'
- resizeMode
- 肯定圖像在飛濺加載屏幕中的顯示方式。必須是封面或包含之一,默認爲包含。有效值:'cover','contains'
- image--圖片
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- tabletImage
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
Android--安卓
僅限獨立應用程序。 Android獨立應用程序特定配置
- package--包
- Android獨立應用的軟件包名稱。您能夠作到這一點,但它必須在Play商店中獨一無二。看到這個StackOverflow的問題。反向DNS符號您的應用的惟一名稱。例如,host.exp.exponent,其中exp.host是咱們的域名,Expo是咱們的應用程序。
- versionCode
- Google Play所需的版本號。每一個版本增長1。必須是整數。 https://developer.android.com/studio/publish/versioning.html
- icon--圖標
- 本地路徑或遠程網址映射到Android應用的圖標。若是指定,則會覆蓋頂層圖標鍵。咱們建議您使用1024x1024 png文件(建議Google Play商店使用透明度)。此圖標將顯示在主屏幕上和世博會應用程序中。
- playStoreUrl
- 若是您在Google Play商店中部署了應用,則能夠在Google Play商店中使用該網址。若是您的應用程序是公開的,這用於連接到您的世博項目頁面上的商店頁面。
- permissions--權限
- 獨立應用程序使用的權限列表。刪除該字段以使用默認的權限列表。
- 例如:[「CAMERA」,「ACCESS_FINE_LOCATION」]。
- 您能夠根據您的須要指定如下權限:
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- CAMERA--相機
- MANAGE_DOCUMENTS
- READ_CONTACTS
- READ_EXTERNAL_STORAGE
- READ_INTERNAL_STORAGE
- READ_PHONE_STATE
- RECORD_AUDIO--錄製音頻
- USE_FINGERPRINT
- VIBRATE--震動
- WAKE_LOCK
- WRITE_EXTERNAL_STORAGE
- com.anddoes.launcher.permission.UPDATE_COUNT
- com.android.launcher.permission.INSTALL_SHORTCUT
- com.google.android.c2dm.permission.RECEIVE
- com.google.android.gms.permission.ACTIVITY_RECOGNITION
- com.google.android.providers.gsf.permission.READ_GSERVICES
- com.htc.launcher.permission.READ_SETTINGS
- com.htc.launcher.permission.UPDATE_SHORTCUT
- com.majeur.launcher.permission.UPDATE_BADGE
- com.sec.android.provider.badge.permission.READ
- com.sec.android.provider.badge.permission.WRITE
- com.sonyericsson.home.permission.BROADCAST_BADGE
- config--配置
- branch--分支
- 分支鍵掛鉤分支鏈接服務。
- apiKey
- 您的分支API密鑰
- fabric
- Google Developers Fabric密鑰來鏈接Crashlytics和其餘服務。
- apiKey
- 您的Fabric API密鑰
- buildSecret
- 你的面料構建祕密
- googleMaps--谷歌地圖
- 適用於您的獨立應用的Google地圖Android SDK密鑰。
- apiKey
- 您的Google地圖Android SDK API密鑰
- googleSignIn
- Google Sign-In獨立應用的Android SDK密鑰。
- apiKey
- Android API密鑰。能夠在開發人員控制檯的憑據部分或google-services.json中找到。
- certificateHash
- 用於構建apk的簽名證書的SHA-1哈希,沒有任何分隔符:。能夠在google-services.json中找到。 https://developers.google.com/android/guides/client-auth
- splash
- 針對獨立Android應用程序加載和啓動屏幕的配置。
- backgroundColor--背景顏色
- 填充加載屏幕背景的顏色6個字符長的十六進制顏色字符串,例如:'#000000'
- resizeMode
- 肯定圖像在飛濺加載屏幕中的顯示方式。必須是封面或包含之一,默認爲包含。有效值:'cover','contains'
- LDPI
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- MDPI
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- hdpi
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- xhdpi
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- xxhdpi
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
- xxhdpi
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
[FB這些東西我們也用不了,下面的看不看無所謂]
facebookAppId
用於全部Facebook庫。在https://developers.facebook.com上設置您的Facebook應用程序ID。
facebookDisplayName
用於本地Facebook登陸。
facebookScheme
用於Facebook本地登陸。以'fb'開始,後跟一串數字,如'fb1234567890'。您能夠在https://developers.facebook.com/docs/facebook-login/ios的「配置您的info.plist」部分找到您的方案。
splash
用於獨立應用程序的加載和啓動屏幕的配置。
- backgroundColor--背景顏色
- 填充加載屏幕背景的顏色6個字符長的十六進制顏色字符串,例如:'#000000'
- resizeMode
- 肯定圖像在飛濺加載屏幕中的顯示方式。必須是封面或包含之一,默認爲包含。有效值:'cover','contains'
- image--圖片
- 本地路徑或遠程URL到圖像以填充加載屏幕的背景。圖像大小和縱橫比取決於您。必須是.png。
hooks--鉤子
配置腳本以運行以掛接到發佈過程
postPublish
assetBundlePatterns
指向將在獨立應用程序二進制文件中捆綁的資產的文件全局字符串數組。請閱讀脫機支持指南 。
下一張繼續介紹,這一篇主要介紹了:expo中app.json 文件的配置信息歡迎你們關注個人微信公衆號,這篇文章是否被你們承認,個人衡量標準就是公
衆號粉絲增加人數。歡迎你們轉載,但必須保留本人博客連接!