2020-09-10 14:34:08 +03:00
# Toolset JSON structure
2023-12-04 12:13:08 +01:00
2020-09-10 14:34:08 +03:00
## Xcode
2023-12-04 12:13:08 +01:00
2020-11-11 09:31:22 +03:00
- `versions` - the array of objects that will present installed Xcode versions
2023-12-04 12:13:08 +01:00
- `link` property points to the place where Xcode will be located on image. `/Applications/Xcode_<link>.app`
- `version` points to Xcode version that will be downloaded and installed
- `symlinks` describes the list of aliases where symlinks will be created to
2024-08-09 11:25:15 +02:00
- `sha256` used to check integrity of the Xcode installer file
2025-03-23 12:40:15 +01:00
- `install_runtimes` – controls the installation of simulator runtimes:
- `default` – installs all default runtimes.
- `none` – skips runtime installation.
- **Hashtable** – allows manual selection:
- Mandatory keys: `[ "iOS", "watchOS", "tvOS" ]` , plus `visionOS` for arm64 images.
- Values [array of string]:
- `"default"` – installs the default runtime.
- `"skip"` – skips installation.
- Specific version numbers, e.g., `"18.2"` , `"2.2"` , `"18.3.1"` .
- Apple release version, e.g., `"22E5216h"` , `"17A577"` .
- `default` - version of Xcode to set as default (should be matched with any `link` in `versions` property)
2020-11-11 09:31:22 +03:00
**Example:** `"11.2"`
2020-09-10 14:34:08 +03:00
2020-11-11 09:31:22 +03:00
**Note:**
2023-12-04 12:13:08 +01:00
2025-01-24 10:57:28 +01:00
- `version` is specified with `+` or `-` , exact Xcode name should be like `16.2.0-Beta.3+16C5023f` or `16.2_Release_Candidate+16C5031c` and will be matching `.xip` file name.
- `link` is specified with `_` and doesn't contain spaces, example: `16.2_Release_Candidate` or `16.1` ; pattern description:
- DOWNLOAD_URL="https://download.developer.apple.com/Developer_Tools/$SOURCE_FILE_LOCATION/$SOURCE_FILE_NAME.$FILE_EXTENSION"
- SOURCE_FILE_NAME: "Xcode_$link"
- SOURCE_FILE_LOCATION: "Xcode_$link"
- FILE_EXTENSION: xip
2020-11-11 09:31:22 +03:00
**Example:**
2023-12-04 12:13:08 +01:00
2025-03-23 12:40:15 +01:00
String format:
2023-12-04 12:13:08 +01:00
```json
2020-11-11 09:31:22 +03:00
"versions" : [
2025-03-23 12:40:15 +01:00
{ "link" : "16_beta_4" , "version" : "16.0.0-Beta.4+16A5211f" , "symlinks" : [ "16.0" ], "install_runtimes" : "none" , "sha256" : "4270cd8021b2f7f512ce91bfc4423b25bccab36cdab21834709d798c8daade72" },
{ "link" : "15.4" , "version" : "15.4.0+15F31d" , "install_runtimes" : "default" , "sha256" : "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a" }
]
```
Block format:
```json
"versions" : [
{
"link" : "16.2" ,
"version" : "16.2+16C5032a" ,
"sha256" : "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de" ,
"install_runtimes" : [
{ "iOS" : [ "18.0" , "18.1" , "18.2" ] },
{ "watchOS" : "default" },
{ "tvOS" : "default" },
{ "visionOS" : "2.2" }
]
},
{
"link" : "16.1" ,
"version" : "16.1+16B40" ,
"sha256" : "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720" ,
"install_runtimes" : "default"
}
2020-11-11 09:31:22 +03:00
]
```
2020-09-10 14:34:08 +03:00
## Android
2023-12-04 12:13:08 +01:00
2020-09-10 14:34:08 +03:00
- `platform-list` - the array of android platforms to install.
**Example:** `[ "android-29", "android-28", "android-27" ]`
- `build-tools` - the array of android build tools to install.
**Example:** `[ "29.0.2", "29.0.1", "29.0.0", "28.0.3" ]`
2023-12-04 12:13:08 +01:00
- `extras` - the array of android extra items to install.
2020-09-10 14:34:08 +03:00
**Example:** `[ "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager" ]`
2025-01-27 14:09:51 +01:00
- `addons` - the array of android add-ons to install.
2020-09-10 14:34:08 +03:00
**Example:** `[ "addon-google_apis-google-24", "addon-google_apis-google-23" ]`
2023-12-04 12:13:08 +01:00
## Toolset JSON validation
2020-09-10 14:34:08 +03:00
File `Toolset.Tests.ps1` contains PowerShell [Pester ](https://github.com/Pester/Pester ) tests that validate JSON toolset files.
2023-12-04 12:13:08 +01:00
Type `Invoke-Pester` in the current folder in PowerShell to run tests.