App Configuration (Xcode)
Jasonelle controls application settings and plugin registration through config.jsonc.
Overview
The build pipeline merges lib/common/config/config.jsonc with lib/xcode/config/config.jsonc.
The merged output is written to build/xcode/config/config.jsonc.
Downstream tools use this file to configure the Xcode project and copy plugins.
Run the following command to merge the configuration files:
task jsonc.xcode
File Locations
-
lib/common/config/config.jsonc: Baseline application settings and plugins. -
lib/xcode/config/config.jsonc: Xcode specific settings and overrides. -
build/xcode/config/config.jsonc: Merged file consumed by the build pipeline.
Common Configuration (lib/common/config/config.jsonc)
The lib/common/config/config.jsonc file defines common application settings across platforms.
Configuration Properties
| Property | Type | Description |
|---|---|---|
|
String |
The initial URL loaded inside the main web view. |
|
String |
The application bundle identifier (for example, |
|
String |
The application display name shown below the home screen icon. |
|
String |
The base application version (for example, |
|
Boolean |
Enables remote web debugging through Safari Web Inspector. |
|
Array of Strings |
Allowed domain hostnames for internal navigation. |
|
Object |
Map of registered plugins and their source locations. |
Domain Whitelist (allowed)
The allowed array controls web view navigation:
-
When empty or omitted, all URLs open inside the main web view.
-
When domains are present, only matching hostnames load inside the main web view.
-
External links not matching the whitelist open in the system default browser.
Plugin Resolution
The plugins object maps plugin class names to location specifiers:
-
@jasonelle: Core plugin present in both Android and Xcode templates (sources/android/andsources/xcode/). -
@jasonelle/xcode: Core plugin present only in the Xcode template (sources/xcode/). Example:JLPluginAppleSignIn. -
@lib/<PluginName>: Custom workspace plugin located atlib/common/sources/plugins/<PluginName>. -
@lib/xcode/<PluginName>: Custom Xcode plugin located atlib/common/sources/plugins/<PluginName>/xcode.
Merged Output (build/xcode/config/config.jsonc)
The following example shows the resulting merged file after running task jsonc.xcode:
{
"allowed": [
"github.com"
],
"app_id": "com.example.application",
"app_name": "Jasonelle v4",
"app_version": "1.0",
"inspectable": true,
"plugins": {
"JLPluginCookies": "@jasonelle",
"JLPluginDevice": "@jasonelle"
},
"url": "https://jasonelle.com"
}
Pipeline Integration
Downstream build tools consume build/xcode/config/config.jsonc:
-
tools/appconf: Readsapp_idto updatePRODUCT_BUNDLE_IDENTIFIERinproject.pbxproj. Readsapp_nameto updateINFOPLIST_KEY_CFBundleDisplayName. Readsapp_versionto setMARKETING_VERSIONand a timestampedCURRENT_PROJECT_VERSION(the build number). -
tools/plugins: Readspluginsto copy declared plugin code intobuild/xcode/sources/.