簡要:本系列文章講會對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時關注的一些問題
Expo大作戰(三)--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型注意點等
Expo大作戰(四)--快速用expo構建一個app,expo中的關鍵術語
Expo大作戰(五)--expo中app.json 文件的配置信息
Expo大作戰(六)--expo開發模式,expo中exp命令行工具,expo中如何查看日志log,expo中的調試方式
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
exponentIconColorbut 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 文件的配置信息歡迎大家關注我的微信公眾號,這篇文章是否被大家認可,我的衡量標准就是公
眾號粉絲增長人數。歡迎大家轉載,但必須保留本人博客鏈接!


