@radhya/mach 2.2.5 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/frameworks/expo.md
CHANGED
|
@@ -145,6 +145,41 @@ Mach applies the resolved value after Expo prebuild, so `app.json` or `app.confi
|
|
|
145
145
|
|
|
146
146
|
This updates native build numbers only. Apple also requires the marketing version to increase when a released version train is closed. In Expo projects, that is usually `expo.version` in `app.json` or `app.config.*`.
|
|
147
147
|
|
|
148
|
+
## iOS app extensions
|
|
149
|
+
|
|
150
|
+
For Expo CNG projects, declare app extensions in the EAS-compatible Expo field:
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"expo": {
|
|
155
|
+
"extra": {
|
|
156
|
+
"eas": {
|
|
157
|
+
"build": {
|
|
158
|
+
"experimental": {
|
|
159
|
+
"ios": {
|
|
160
|
+
"appExtensions": [
|
|
161
|
+
{
|
|
162
|
+
"targetName": "ShareExtension",
|
|
163
|
+
"bundleIdentifier": "com.example.app.share"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Mach reads this field before prebuild, resolves a separate saved provisioning
|
|
176
|
+
profile for the main app and each extension, then applies the profiles to the
|
|
177
|
+
generated Xcode targets. If an Expo project commits its native `ios/` directory,
|
|
178
|
+
Mach can also detect extension targets from Xcode. `ios.appExtensions` in
|
|
179
|
+
`mach.config.json` is available as an explicit override.
|
|
180
|
+
|
|
181
|
+
Single-target Expo projects continue to use the existing single-profile path.
|
|
182
|
+
|
|
148
183
|
## Common Commands
|
|
149
184
|
|
|
150
185
|
```bash
|
|
@@ -119,6 +119,39 @@ For store builds, upload iOS signing credentials and App Store Connect credentia
|
|
|
119
119
|
|
|
120
120
|
`ios.buildNumber: "auto"` allocates the next scoped Dashboard value. An explicit value is used exactly as configured. Mach applies the resolved value to the app and extension targets, then verifies the final IPA before upload.
|
|
121
121
|
|
|
122
|
+
### iOS app extensions
|
|
123
|
+
|
|
124
|
+
Mach detects committed Xcode app-extension targets and resolves one provisioning
|
|
125
|
+
profile for each exact bundle identifier. The same compatible Apple signing
|
|
126
|
+
certificate is reused across the targets. Upload a profile for the main app and
|
|
127
|
+
for every extension under the same Mach project.
|
|
128
|
+
|
|
129
|
+
Automatic Xcode detection is the default. For generated or unusual projects,
|
|
130
|
+
declare the targets explicitly:
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"ios": {
|
|
135
|
+
"bundleIdentifier": "com.example.app",
|
|
136
|
+
"iosScheme": "Example",
|
|
137
|
+
"appExtensions": [
|
|
138
|
+
{
|
|
139
|
+
"targetName": "ShareExtension",
|
|
140
|
+
"bundleIdentifier": "com.example.app.share"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"targetName": "CallerDirectoryExtension",
|
|
144
|
+
"bundleIdentifier": "com.example.app.callerid"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Mach installs every profile, applies it only to the matching Xcode target, and
|
|
152
|
+
writes all bundle-to-profile mappings to `ExportOptions.plist`. Projects with no
|
|
153
|
+
extensions continue through the original single-profile signing path.
|
|
154
|
+
|
|
122
155
|
## Android Notes
|
|
123
156
|
|
|
124
157
|
Mach runs Gradle from `android/gradlew` when present. Production builds default to `bundleRelease`; internal builds default to `assembleRelease`; development-client style builds default to `assembleDebug`.
|