416 lines
16 KiB
JSON
416 lines
16 KiB
JSON
{
|
|
"schema": {
|
|
"type":"object",
|
|
"properties":{
|
|
"name":{
|
|
"description":"The name of your app as it appears both within Exponent and on your home screen as a standalone app.",
|
|
"type":"string"
|
|
},
|
|
"description":{
|
|
"description":"A short description of what your app is and why it is great.",
|
|
"type":"string"
|
|
},
|
|
"slug":{
|
|
"description":"The friendly url name for publishing. eg: `exp.host/@your-username/slug`.",
|
|
"type":"string",
|
|
"pattern":"^[a-zA-Z0-9\\-]+$"
|
|
},
|
|
"privacy":{
|
|
"description":"Either `public` or `unlisted`. If not provided, defaults to `unlisted`. In the future `private` will be supported. `unlisted` hides the experience from search results.",
|
|
"enum":[
|
|
"public",
|
|
"unlisted"
|
|
],
|
|
"type":[
|
|
"array",
|
|
"boolean",
|
|
"number",
|
|
"object",
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"sdkVersion":{
|
|
"description":"The Exponent sdkVersion to run the project on. This should line up with the version specified in your package.json.",
|
|
"type":"string",
|
|
"pattern":"^(\\d+\\.\\d+\\.\\d+)|(UNVERSIONED)$"
|
|
},
|
|
"version":{
|
|
"description":"Your app version, use whatever versioning scheme that you like.",
|
|
"type":"string"
|
|
},
|
|
"orientation":{
|
|
"description":"Lock your app to a specific orientation with `portrait` or `landscape`. Defaults to no lock.",
|
|
"enum":[
|
|
"default",
|
|
"portrait",
|
|
"landscape"
|
|
],
|
|
"type":[
|
|
"array",
|
|
"boolean",
|
|
"number",
|
|
"object",
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"primaryColor":{
|
|
"description":"On Android, this will determine the color of your app in the multitasker. Currently this is not used on iOS, but it may be used for other purposes in the future.",
|
|
"type":"string",
|
|
"pattern":"^#|(#)\\d{6}$",
|
|
"meta": {
|
|
"regexHuman": "6 character long hex color string, eg: `'#000000'`"
|
|
}
|
|
},
|
|
"icon":{
|
|
"description":"Local path or remote url to an image to use for your app's icon. We recommend that you use a 512x512 png file with transparency. This icon will appear on the home screen and within the Exponent app.",
|
|
"type":"string",
|
|
"meta":{
|
|
"asset":true,
|
|
"contentTypePattern":"^image/png$",
|
|
"contentTypeHuman":".png image"
|
|
}
|
|
},
|
|
"notification":{
|
|
"description":"Configuration for remote (push) notifications.",
|
|
"type":"object",
|
|
"properties":{
|
|
"icon":{
|
|
"description":"Local path or remote url to an image to use as the icon for push notifications. 48x48 png grayscale with transparency.",
|
|
"type":"string",
|
|
"meta":{
|
|
"asset":true,
|
|
"contentTypePattern":"^image/png$",
|
|
"contentTypeHuman":".png image"
|
|
}
|
|
},
|
|
"color":{
|
|
"description":"Tint color for the push notification image when it appears in the notification tray.",
|
|
"type":"string",
|
|
"pattern":"^#|(#)\\d{6}$",
|
|
"meta": {
|
|
"regexHuman": "6 character long hex color string, eg: `'#000000'`"
|
|
}
|
|
},
|
|
"androidMode":{
|
|
"description":"Show each push notification individually (`default`) or collapse into one (`collapse`).",
|
|
"enum":[
|
|
"default",
|
|
"collapse"
|
|
],
|
|
"type":[
|
|
"array",
|
|
"boolean",
|
|
"number",
|
|
"object",
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"androidCollapsedTitle":{
|
|
"description":"If `androidMode` is set to `collapse`, this title is used for the collapsed notification message. eg: `'#{unread_notifications} new interactions'`.",
|
|
"type":"string"
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"loading":{
|
|
"description":"Configuration for the loading screen that users see when opening your app, while fetching & caching bundle and assets.",
|
|
"type":"object",
|
|
"properties":{
|
|
"icon":{
|
|
"description":"Local path or remote url to an image to display while starting up the app. Image size and aspect ratio are up to you. Must be a .png.",
|
|
"type":"string",
|
|
"meta":{
|
|
"asset":true,
|
|
"contentTypePattern":"^image/png$",
|
|
"contentTypeHuman":".png image"
|
|
}
|
|
},
|
|
"exponentIconColor":{
|
|
"description":"If no icon is provided, we will show the Exponent logo. You can choose between `white` and `blue`.",
|
|
"enum":[
|
|
"white",
|
|
"blue"
|
|
],
|
|
"type":[
|
|
"array",
|
|
"boolean",
|
|
"number",
|
|
"object",
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"exponentIconGrayscale":{
|
|
"description":"Similar to `exponentIconColor` but instead indicate if it should be grayscale (`1`) or not (`0`).",
|
|
"type":"number",
|
|
"minimum":0,
|
|
"maximum":1
|
|
},
|
|
"backgroundImage":{
|
|
"description":"Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.",
|
|
"type":"string",
|
|
"meta":{
|
|
"asset":true,
|
|
"contentTypePattern":"^image/png$",
|
|
"contentTypeHuman":".png image"
|
|
}
|
|
},
|
|
"backgroundColor":{
|
|
"description":"Color to fill the loading screen background",
|
|
"type":"string",
|
|
"pattern":"^#|(#)\\d{6}$",
|
|
"meta": {
|
|
"regexHuman": "6 character long hex color string, eg: `'#000000'`"
|
|
}
|
|
},
|
|
"hideExponentText":{
|
|
"description":"By default, Exponent shows some text at the bottom of the loading screen. Set this to `true` to disable.",
|
|
"type":"boolean"
|
|
},
|
|
"loadingIndicatorStyleExperimental": {
|
|
"description": "DEPRECATED: was used in the past for changing the style of the iOS loading indicator.",
|
|
"type": "string",
|
|
"pattern": "^light$",
|
|
"meta": {
|
|
"autogenerated": true
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"appKey":{
|
|
"description":"By default, Exponent looks for the application registered with the AppRegistry as `main`. If you would like to change this, you can specify the name in this property.",
|
|
"type":"string"
|
|
},
|
|
"androidStatusBarColor":{
|
|
"type":"string",
|
|
"pattern":"^#|(#)\\d{6}$",
|
|
"meta": {
|
|
"deprecated": true,
|
|
"regexHuman": "6 character long hex color string, eg: `'#000000'`"
|
|
}
|
|
},
|
|
"androidStatusBar":{
|
|
"description":"Configuration for android statusbar.",
|
|
"type":"object",
|
|
"properties": {
|
|
"barStyle": {
|
|
"description":"Configure the statusbar icons to have light or dark color.",
|
|
"type":"string",
|
|
"enum":[
|
|
"light-content",
|
|
"dark-content"
|
|
]
|
|
},
|
|
"backgroundColor": {
|
|
"description":"Configuration for android statusbar.",
|
|
"type":"string",
|
|
"pattern":"^#|(#)\\d{6}$",
|
|
"meta": {
|
|
"regexHuman": "6 character long hex color string, eg: `'#000000'`"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"androidHideExponentNotificationInShellApp":{
|
|
"description":"By default, Exponent adds a notification to your app with refresh button and debug info. Set this to `true` to disable.",
|
|
"type":"boolean"
|
|
},
|
|
"scheme":{
|
|
"description":"Url scheme to link into your app. For example, if we set this to `'rnplay'`, then rnplay:// urls would open your app when tapped.",
|
|
"type":"string",
|
|
"meta": {
|
|
"standaloneOnly": true
|
|
}
|
|
},
|
|
"entryPoint":{
|
|
"description":"The relative path to your main JavaScript file.",
|
|
"type":"string"
|
|
},
|
|
"extra":{
|
|
"description":"Any extra fields you want to pass to your experience.",
|
|
"type":"object",
|
|
"properties":{
|
|
|
|
},
|
|
"additionalProperties":true
|
|
},
|
|
"rnCliPath":{
|
|
"type":"string"
|
|
},
|
|
"packagerOpts":{
|
|
"type":"object",
|
|
"properties":{
|
|
|
|
},
|
|
"additionalProperties":true
|
|
},
|
|
"ignoreNodeModulesValidation":{
|
|
"type":"boolean"
|
|
},
|
|
"nodeModulesPath":{
|
|
"type":"string"
|
|
},
|
|
"ios":{
|
|
"description":"iOS standalone app specific configuration",
|
|
"type":"object",
|
|
"meta": {
|
|
"standaloneOnly": true
|
|
},
|
|
"properties":{
|
|
"bundleIdentifier":{
|
|
"description":"The bundle identifier for your iOS standalone app. You make it up, but it needs to be unique on the App Store. See [this StackOverflow question](http://stackoverflow.com/questions/11347470/what-does-bundle-identifier-mean-in-the-ios-project).",
|
|
"type":"string",
|
|
"pattern":"^[a-zA-Z][a-zA-Z0-9\\-\\.]+$",
|
|
"meta": {
|
|
"regexHuman": "iOS bundle identifier notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Exponent is our app."
|
|
}
|
|
},
|
|
"buildNumber": {
|
|
"description": "Build number for your iOS standalone app. Must be a string that matches Apple's [format for CFBundleVersion](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102364).",
|
|
"type": "string",
|
|
"pattern": "^[A-Za-z0-9\\.]+$"
|
|
},
|
|
"config":{
|
|
"type":"object",
|
|
"properties":{
|
|
"usesNonExemptEncryption":{
|
|
"description":"Sets `ITSAppUsesNonExemptEncryption` in the standalone ipa's Info.plist to the given boolean value.",
|
|
"type":"boolean"
|
|
},
|
|
"googleMapsApiKey":{
|
|
"description":"`Google Maps iOS SDK <https://developers.google.com/maps/documentation/ios-sdk/start>`_ key for your standalone app.",
|
|
"type":"string"
|
|
},
|
|
"googleSignIn":{
|
|
"description":"[Google Sign-In iOS SDK](https://developers.google.com/identity/sign-in/ios/start-integrating) keys for your standalone app.",
|
|
"type":"object",
|
|
"properties":{
|
|
"reservedClientId":{
|
|
"description":"The reserved client id url scheme. Can be found in `GoogeService-Info.plist`.",
|
|
"type":"string"
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"supportsTablet":{
|
|
"description":"Whether your standalone iOS app supports tablet screen sizes.",
|
|
"type":"boolean"
|
|
},
|
|
"infoPlist":{
|
|
"description":"Arbitrary configuration to add to your standalone app's native Info.plist. Applied prior to all other Exponent-specific configuration. No other validation is performed, so use this at your own risk of rejection from the App Store.",
|
|
"type":"object",
|
|
"properties":{},
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"android":{
|
|
"description":"Android standalone app specific configuration",
|
|
"type":"object",
|
|
"meta": {
|
|
"standaloneOnly": true
|
|
},
|
|
"properties":{
|
|
"package":{
|
|
"description":"The package name for your Android standalone app. You make it up, but it needs to be unique on the Play Store. See [this StackOverflow question](http://stackoverflow.com/questions/6273892/android-package-name-convention).",
|
|
"type":"string",
|
|
"pattern":"^[a-zA-Z][a-zA-Z0-9\\_\\.]+$",
|
|
"meta": {
|
|
"regexHuman": "Reverse DNS notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Exponent is our app."
|
|
}
|
|
},
|
|
"versionCode":{
|
|
"description":"Version number required by Google Play. Increment by one for each release. https://developer.android.com/studio/publish/versioning.html.",
|
|
"type":"integer"
|
|
},
|
|
"config":{
|
|
"type":"object",
|
|
"properties":{
|
|
"fabric":{
|
|
"description":"[Twitter Fabric](https://get.fabric.io/) keys to hook up Crashlytics and other services.",
|
|
"type":"object",
|
|
"properties":{
|
|
"apiKey":{
|
|
"description":"Your Fabric API key",
|
|
"type":"string"
|
|
},
|
|
"buildSecret":{
|
|
"description":"Your Fabric build secret",
|
|
"type":"string"
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"googleMaps":{
|
|
"description":"[Google Maps Android SDK](https://developers.google.com/maps/documentation/android-api/signup) key for your standalone app.",
|
|
"type":"object",
|
|
"properties":{
|
|
"apiKey":{
|
|
"description":"Your Google Maps Android SDK API key",
|
|
"type":"string"
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"googleSignIn":{
|
|
"description":"[Google Sign-In Android SDK](https://developers.google.com/identity/sign-in/android/start-integrating) keys for your standalone app.",
|
|
"type":"object",
|
|
"properties":{
|
|
"apiKey":{
|
|
"description":"The Android API key. Can be found in the credentials section of the developer console or in `google-services.json`.",
|
|
"type":"string"
|
|
},
|
|
"certificateHash":{
|
|
"description":"The SHA-1 hash of the signing certificate used to build the apk without any separator `:`. Can be found in `google-services.json`. https://developers.google.com/android/guides/client-auth",
|
|
"type":"string"
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
}
|
|
},
|
|
"additionalProperties":false
|
|
},
|
|
"facebookScheme":{
|
|
"description":"Used for Facebook native login. Starts with 'fb' and followed by a string of digits, like 'fb1234567890'. You can find your scheme at https://developers.facebook.com/docs/facebook-login/ios in the 'Configuring Your info.plist' section.",
|
|
"type":"string",
|
|
"pattern": "^fb[0-9]+$"
|
|
},
|
|
"isDetached": {
|
|
"description": "Is app detached",
|
|
"type": "boolean",
|
|
"meta": {
|
|
"autogenerated": true
|
|
}
|
|
},
|
|
"detach":{
|
|
"description":"Extra fields needed by detached apps",
|
|
"type":"object",
|
|
"properties":{
|
|
|
|
},
|
|
"meta": {
|
|
"autogenerated": true
|
|
},
|
|
"additionalProperties":true
|
|
}
|
|
},
|
|
"additionalProperties":false,
|
|
"required":[
|
|
"name",
|
|
"slug",
|
|
"sdkVersion"
|
|
]
|
|
}
|
|
}
|