expo-build-properties 0.12.4 → 0.13.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/CHANGELOG.md +18 -3
- package/README.md +3 -8
- package/build/android.js +6 -1
- package/build/ios.js +7 -3
- package/build/pluginConfig.d.ts +61 -29
- package/build/pluginConfig.js +1 -1
- package/package.json +3 -3
- package/src/android.ts +12 -1
- package/src/ios.ts +18 -4
- package/src/pluginConfig.ts +74 -29
package/CHANGELOG.md
CHANGED
|
@@ -10,19 +10,34 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
-
## 0.
|
|
13
|
+
## 0.13.0 — 2024-10-22
|
|
14
|
+
|
|
15
|
+
### 🛠 Breaking changes
|
|
16
|
+
|
|
17
|
+
- Bumped iOS deployment target to 15.1. ([#30840](https://github.com/expo/expo/pull/30840) by [@tsapeta](https://github.com/tsapeta))
|
|
18
|
+
|
|
19
|
+
### 💡 Others
|
|
20
|
+
|
|
21
|
+
- Export missing types. ([#29401](https://github.com/expo/expo/pull/29401) by [@Simek](https://github.com/Simek))
|
|
22
|
+
- Deprecate `android.newArchEnabled` and `ios.newArchEnabled` in favor of app config `newArchEnabled`. ([#31963](https://github.com/expo/expo/pull/31963) by [@gabrieldonadel](https://github.com/gabrieldonadel))
|
|
23
|
+
|
|
24
|
+
## 0.12.5 - 2024-08-07
|
|
25
|
+
|
|
26
|
+
_This version does not introduce any user-facing changes._
|
|
27
|
+
|
|
28
|
+
## 0.12.4 - 2024-07-30
|
|
14
29
|
|
|
15
30
|
### 🎉 New features
|
|
16
31
|
|
|
17
32
|
- Add `android.enablePngCrunchInReleaseBuilds` to enable toggling PNG crunching in release builds. ([#30699](https://github.com/expo/expo/pull/30699) by [@brentvatne](https://github.com/brentvatne))
|
|
18
33
|
|
|
19
|
-
## 0.12.3
|
|
34
|
+
## 0.12.3 - 2024-06-06
|
|
20
35
|
|
|
21
36
|
### 🎉 New features
|
|
22
37
|
|
|
23
38
|
- `ios.privacyManifestAggregationEnabled` is now enabled by default. ([#29439](https://github.com/expo/expo/pull/29439) by [@alanjhughes](https://github.com/alanjhughes))
|
|
24
39
|
|
|
25
|
-
## 0.12.2
|
|
40
|
+
## 0.12.2 - 2024-06-05
|
|
26
41
|
|
|
27
42
|
### 🐛 Bug fixes
|
|
28
43
|
|
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
## API documentation
|
|
6
6
|
|
|
7
|
-
- [Documentation for the
|
|
8
|
-
- [Documentation for the
|
|
7
|
+
- [Documentation for the latest stable release](https://docs.expo.dev/versions/latest/sdk/build-properties/)
|
|
8
|
+
- [Documentation for the main branch](https://docs.expo.dev/versions/unversioned/sdk/build-properties/)
|
|
9
9
|
|
|
10
10
|
### Installation
|
|
11
11
|
|
|
@@ -39,9 +39,4 @@ Add plugin to `app.json`. For example:
|
|
|
39
39
|
|
|
40
40
|
## Contributing
|
|
41
41
|
|
|
42
|
-
Contributions are very welcome! Please refer to guidelines described in the [contributing guide][
|
|
43
|
-
|
|
44
|
-
[docs-main]: https://github.com/expo/expo/blob/main/docs/pages/versions/unversioned/sdk/build-properties.mdx
|
|
45
|
-
[docs-stable]: https://docs.expo.dev/versions/latest/sdk/build-properties/
|
|
46
|
-
[contributing]: https://github.com/expo/expo#contributing
|
|
47
|
-
[config-plugins]: https://docs.expo.dev/config-plugins/introduction
|
|
42
|
+
Contributions are very welcome! Please refer to guidelines described in the [contributing guide][https://github.com/expo/expo#contributing].
|
package/build/android.js
CHANGED
|
@@ -13,7 +13,12 @@ const { createBuildGradlePropsConfigPlugin } = config_plugins_1.AndroidConfig.Bu
|
|
|
13
13
|
exports.withAndroidBuildProperties = createBuildGradlePropsConfigPlugin([
|
|
14
14
|
{
|
|
15
15
|
propName: 'newArchEnabled',
|
|
16
|
-
propValueGetter: (config) =>
|
|
16
|
+
propValueGetter: (config) => {
|
|
17
|
+
if (config.android?.newArchEnabled !== undefined) {
|
|
18
|
+
config_plugins_1.WarningAggregator.addWarningAndroid('withAndroidBuildProperties', 'android.newArchEnabled is deprecated, use app config `newArchEnabled` instead.', 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled');
|
|
19
|
+
}
|
|
20
|
+
return config.android?.newArchEnabled?.toString();
|
|
21
|
+
},
|
|
17
22
|
},
|
|
18
23
|
{
|
|
19
24
|
propName: 'android.minSdkVersion',
|
package/build/ios.js
CHANGED
|
@@ -6,7 +6,12 @@ const { createBuildPodfilePropsConfigPlugin } = config_plugins_1.IOSConfig.Build
|
|
|
6
6
|
exports.withIosBuildProperties = createBuildPodfilePropsConfigPlugin([
|
|
7
7
|
{
|
|
8
8
|
propName: 'newArchEnabled',
|
|
9
|
-
propValueGetter: (config) =>
|
|
9
|
+
propValueGetter: (config) => {
|
|
10
|
+
if (config.ios?.newArchEnabled !== undefined) {
|
|
11
|
+
config_plugins_1.WarningAggregator.addWarningIOS('withIosBuildProperties', 'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead.', 'https://docs.expo.dev/versions/latest/config/app/#newarchenabled');
|
|
12
|
+
}
|
|
13
|
+
return config.ios?.newArchEnabled?.toString();
|
|
14
|
+
},
|
|
10
15
|
},
|
|
11
16
|
{
|
|
12
17
|
propName: 'ios.useFrameworks',
|
|
@@ -53,8 +58,7 @@ function updateDeploymentTargetXcodeProject(project, deploymentTarget) {
|
|
|
53
58
|
.filter(([_, target]) => Target.isTargetOfType(target, Target.TargetType.APPLICATION))
|
|
54
59
|
.map(([_, target]) => target.buildConfigurationList);
|
|
55
60
|
for (const buildConfigListId of targetBuildConfigListIds) {
|
|
56
|
-
|
|
57
|
-
for (const [_, configurations] of config_plugins_1.IOSConfig.XcodeUtils.getBuildConfigurationsForListId(project, buildConfigListId)) {
|
|
61
|
+
for (const [, configurations] of config_plugins_1.IOSConfig.XcodeUtils.getBuildConfigurationsForListId(project, buildConfigListId)) {
|
|
58
62
|
const { buildSettings } = configurations;
|
|
59
63
|
if (buildSettings?.IPHONEOS_DEPLOYMENT_TARGET) {
|
|
60
64
|
buildSettings.IPHONEOS_DEPLOYMENT_TARGET = deploymentTarget;
|
package/build/pluginConfig.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface PluginConfigType {
|
|
|
19
19
|
*/
|
|
20
20
|
export interface PluginConfigTypeAndroid {
|
|
21
21
|
/**
|
|
22
|
+
* @deprecated Use app config [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) instead.
|
|
22
23
|
* Enable React Native new architecture for Android platform.
|
|
23
24
|
*/
|
|
24
25
|
newArchEnabled?: boolean;
|
|
@@ -63,7 +64,7 @@ export interface PluginConfigTypeAndroid {
|
|
|
63
64
|
*/
|
|
64
65
|
extraProguardRules?: string;
|
|
65
66
|
/**
|
|
66
|
-
* Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
67
|
+
* Interface representing available configuration for Android Gradle plugin [`PackagingOptions`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
67
68
|
*/
|
|
68
69
|
packagingOptions?: PluginConfigTypeAndroidPackagingOptions;
|
|
69
70
|
/**
|
|
@@ -75,7 +76,6 @@ export interface PluginConfigTypeAndroid {
|
|
|
75
76
|
/**
|
|
76
77
|
* Add extra maven repositories to all gradle projects.
|
|
77
78
|
*
|
|
78
|
-
*
|
|
79
79
|
* Takes an array of objects or strings.
|
|
80
80
|
* Strings are passed as the `url` property of the object with no credentials or authentication scheme.
|
|
81
81
|
*
|
|
@@ -90,7 +90,6 @@ export interface PluginConfigTypeAndroid {
|
|
|
90
90
|
* ```
|
|
91
91
|
*
|
|
92
92
|
* By using an `AndroidMavenRepository` object, you can specify credentials and an authentication scheme.
|
|
93
|
-
*
|
|
94
93
|
* ```groovy
|
|
95
94
|
* allprojects {
|
|
96
95
|
* repositories {
|
|
@@ -109,9 +108,6 @@ export interface PluginConfigTypeAndroid {
|
|
|
109
108
|
* ```
|
|
110
109
|
*
|
|
111
110
|
* @see [Gradle documentation](https://docs.gradle.org/current/userguide/declaring_repositories.html#sec:case-for-maven)
|
|
112
|
-
*
|
|
113
|
-
* @hide For the implementation details,
|
|
114
|
-
* this property is actually handled by `expo-modules-autolinking` not the config-plugins inside `expo-build-properties`
|
|
115
111
|
*/
|
|
116
112
|
extraMavenRepos?: (AndroidMavenRepository | string)[];
|
|
117
113
|
/**
|
|
@@ -138,6 +134,9 @@ export interface PluginConfigTypeAndroid {
|
|
|
138
134
|
*/
|
|
139
135
|
manifestQueries?: PluginConfigTypeAndroidQueries;
|
|
140
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* @platform android
|
|
139
|
+
*/
|
|
141
140
|
export interface AndroidMavenRepository {
|
|
142
141
|
/**
|
|
143
142
|
* The URL of the Maven repository.
|
|
@@ -147,7 +146,7 @@ export interface AndroidMavenRepository {
|
|
|
147
146
|
* The credentials to use when accessing the Maven repository.
|
|
148
147
|
* May be of type PasswordCredentials, HttpHeaderCredentials, or AWSCredentials.
|
|
149
148
|
*
|
|
150
|
-
* @see
|
|
149
|
+
* @see The authentication schemes section of [Gradle documentation](https://docs.gradle.org/current/userguide/declaring_repositories.html#sec:authentication_schemes) for more information.
|
|
151
150
|
*/
|
|
152
151
|
credentials?: AndroidMavenRepositoryCredentials;
|
|
153
152
|
/**
|
|
@@ -155,26 +154,39 @@ export interface AndroidMavenRepository {
|
|
|
155
154
|
*/
|
|
156
155
|
authentication?: 'basic' | 'digest' | 'header';
|
|
157
156
|
}
|
|
158
|
-
|
|
157
|
+
/**
|
|
158
|
+
* @platform android
|
|
159
|
+
*/
|
|
160
|
+
export interface AndroidMavenRepositoryPasswordCredentials {
|
|
159
161
|
username: string;
|
|
160
162
|
password: string;
|
|
161
163
|
}
|
|
162
|
-
|
|
164
|
+
/**
|
|
165
|
+
* @platform android
|
|
166
|
+
*/
|
|
167
|
+
export interface AndroidMavenRepositoryHttpHeaderCredentials {
|
|
163
168
|
name: string;
|
|
164
169
|
value: string;
|
|
165
170
|
}
|
|
166
|
-
|
|
171
|
+
/**
|
|
172
|
+
* @platform android
|
|
173
|
+
*/
|
|
174
|
+
export interface AndroidMavenRepositoryAWSCredentials {
|
|
167
175
|
accessKey: string;
|
|
168
176
|
secretKey: string;
|
|
169
177
|
sessionToken?: string;
|
|
170
178
|
}
|
|
171
|
-
|
|
179
|
+
/**
|
|
180
|
+
* @platform android
|
|
181
|
+
*/
|
|
182
|
+
export type AndroidMavenRepositoryCredentials = AndroidMavenRepositoryPasswordCredentials | AndroidMavenRepositoryHttpHeaderCredentials | AndroidMavenRepositoryAWSCredentials;
|
|
172
183
|
/**
|
|
173
184
|
* Interface representing available configuration for iOS native build properties.
|
|
174
185
|
* @platform ios
|
|
175
186
|
*/
|
|
176
187
|
export interface PluginConfigTypeIos {
|
|
177
188
|
/**
|
|
189
|
+
* @deprecated Use app config [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) instead.
|
|
178
190
|
* Enable React Native new architecture for iOS platform.
|
|
179
191
|
*/
|
|
180
192
|
newArchEnabled?: boolean;
|
|
@@ -198,15 +210,22 @@ export interface PluginConfigTypeIos {
|
|
|
198
210
|
/**
|
|
199
211
|
* Add extra CocoaPods dependencies for all targets.
|
|
200
212
|
*
|
|
201
|
-
* This
|
|
213
|
+
* This configuration is responsible for adding the new Pod entries to **ios/Podfile**.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* Creating entry in the configuration like below:
|
|
217
|
+
* ```json
|
|
218
|
+
* [
|
|
219
|
+
* {
|
|
220
|
+
* name: "Protobuf",
|
|
221
|
+
* version: "~> 3.14.0",
|
|
222
|
+
* }
|
|
223
|
+
* ]
|
|
202
224
|
* ```
|
|
203
|
-
*
|
|
204
|
-
*
|
|
225
|
+
* Will produce the following entry in the generated **ios/Podfile**:
|
|
226
|
+
* ```ruby
|
|
205
227
|
* pod 'Protobuf', '~> 3.14.0'
|
|
206
228
|
* ```
|
|
207
|
-
*
|
|
208
|
-
* @hide For the implementation details,
|
|
209
|
-
* this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties.
|
|
210
229
|
*/
|
|
211
230
|
extraPods?: ExtraIosPodDependency[];
|
|
212
231
|
/**
|
|
@@ -214,8 +233,8 @@ export interface PluginConfigTypeIos {
|
|
|
214
233
|
*
|
|
215
234
|
* This speeds up compiling C++ code by caching the results of previous compilations.
|
|
216
235
|
*
|
|
217
|
-
* @see https://reactnative.dev/docs/build-speed#local-caches
|
|
218
|
-
*
|
|
236
|
+
* @see [React Native's documentation on local caches](https://reactnative.dev/docs/build-speed#local-caches) and
|
|
237
|
+
* [Ccache documentation](https://ccache.dev/).
|
|
219
238
|
*/
|
|
220
239
|
ccacheEnabled?: boolean;
|
|
221
240
|
/**
|
|
@@ -223,8 +242,8 @@ export interface PluginConfigTypeIos {
|
|
|
223
242
|
* CocoaPods resource bundles. If enabled, the manifests will be merged into a
|
|
224
243
|
* single file. If not enabled, developers will need to manually aggregate them.
|
|
225
244
|
*
|
|
226
|
-
* @see https://docs.expo.dev/guides/apple-privacy/
|
|
227
|
-
*
|
|
245
|
+
* @see [Privacy manifests](https://docs.expo.dev/guides/apple-privacy/) guide
|
|
246
|
+
* and [Apple's documentation on Privacy manifest files](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files).
|
|
228
247
|
*/
|
|
229
248
|
privacyManifestAggregationEnabled?: boolean;
|
|
230
249
|
}
|
|
@@ -293,12 +312,17 @@ export interface ExtraIosPodDependency {
|
|
|
293
312
|
* Use the bleeding edge version of a Pod.
|
|
294
313
|
*
|
|
295
314
|
* @example
|
|
296
|
-
* ```
|
|
297
|
-
* {
|
|
315
|
+
* ```json
|
|
316
|
+
* {
|
|
317
|
+
* "name": "AFNetworking",
|
|
318
|
+
* "git": "https://github.com/gowalla/AFNetworking.git",
|
|
319
|
+
* "tag": "0.7.0"
|
|
320
|
+
* }
|
|
298
321
|
* ```
|
|
299
322
|
*
|
|
300
323
|
* This acts like to add this pod dependency statement:
|
|
301
|
-
*
|
|
324
|
+
*
|
|
325
|
+
* ```rb
|
|
302
326
|
* pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
|
|
303
327
|
* ```
|
|
304
328
|
*/
|
|
@@ -317,7 +341,7 @@ export interface ExtraIosPodDependency {
|
|
|
317
341
|
commit?: string;
|
|
318
342
|
}
|
|
319
343
|
/**
|
|
320
|
-
* Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
344
|
+
* Interface representing available configuration for Android Gradle plugin [`PackagingOptions`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
321
345
|
* @platform android
|
|
322
346
|
*/
|
|
323
347
|
export interface PluginConfigTypeAndroidPackagingOptions {
|
|
@@ -338,13 +362,16 @@ export interface PluginConfigTypeAndroidPackagingOptions {
|
|
|
338
362
|
*/
|
|
339
363
|
doNotStrip?: string[];
|
|
340
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* @platform android
|
|
367
|
+
*/
|
|
341
368
|
export interface PluginConfigTypeAndroidQueries {
|
|
342
369
|
/**
|
|
343
370
|
* Specifies one or more apps that your app intends to access. These other apps might integrate with your app, or your app might use services that these other apps provide.
|
|
344
371
|
*/
|
|
345
372
|
package?: string[];
|
|
346
373
|
/**
|
|
347
|
-
* Specifies an intent filter signature. Your app can discover other apps that have matching
|
|
374
|
+
* Specifies an intent filter signature. Your app can discover other apps that have matching `<intent-filter>` elements.
|
|
348
375
|
* These intents have restrictions compared to typical intent filter signatures.
|
|
349
376
|
*
|
|
350
377
|
* @see [Android documentation](https://developer.android.com/training/package-visibility/declaring#intent-filter-signature) for details
|
|
@@ -352,13 +379,16 @@ export interface PluginConfigTypeAndroidQueries {
|
|
|
352
379
|
intent?: PluginConfigTypeAndroidQueriesIntent[];
|
|
353
380
|
/**
|
|
354
381
|
* Specifies one or more content provider authorities. Your app can discover other apps whose content providers use the specified authorities.
|
|
355
|
-
* There are some restrictions on the options that you can include in this
|
|
382
|
+
* There are some restrictions on the options that you can include in this `<provider>` element, compared to a typical `<provider>` manifest element. You may only specify the `android:authorities` attribute.
|
|
356
383
|
*/
|
|
357
384
|
provider?: string[];
|
|
358
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* @platform android
|
|
388
|
+
*/
|
|
359
389
|
export interface PluginConfigTypeAndroidQueriesIntent {
|
|
360
390
|
/**
|
|
361
|
-
* A string naming the action to perform. Usually one of the platform-defined values, such as ACTION_SEND or ACTION_VIEW
|
|
391
|
+
* A string naming the action to perform. Usually one of the platform-defined values, such as `ACTION_SEND` or `ACTION_VIEW`.
|
|
362
392
|
*/
|
|
363
393
|
action?: string;
|
|
364
394
|
/**
|
|
@@ -371,6 +401,9 @@ export interface PluginConfigTypeAndroidQueriesIntent {
|
|
|
371
401
|
*/
|
|
372
402
|
category?: string | string[];
|
|
373
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* @platform android
|
|
406
|
+
*/
|
|
374
407
|
export interface PluginConfigTypeAndroidQueriesData {
|
|
375
408
|
/**
|
|
376
409
|
* Specify a URI scheme that is handled
|
|
@@ -389,4 +422,3 @@ export interface PluginConfigTypeAndroidQueriesData {
|
|
|
389
422
|
* @ignore
|
|
390
423
|
*/
|
|
391
424
|
export declare function validateConfig(config: any): PluginConfigType;
|
|
392
|
-
export {};
|
package/build/pluginConfig.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-build-properties",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Config plugin to customize native build properties on prebuild",
|
|
5
5
|
"main": "build/withBuildProperties.js",
|
|
6
6
|
"types": "build/withBuildProperties.d.ts",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"semver": "^7.6.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"expo-module-scripts": "^
|
|
38
|
+
"expo-module-scripts": "^4.0.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"expo": "*"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "7c7d2362fff23bec26cd145ed34edd9c403551bd"
|
|
44
44
|
}
|
package/src/android.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
AndroidConfig,
|
|
3
3
|
ConfigPlugin,
|
|
4
4
|
History,
|
|
5
|
+
WarningAggregator,
|
|
5
6
|
withAndroidManifest,
|
|
6
7
|
withDangerousMod,
|
|
7
8
|
} from 'expo/config-plugins';
|
|
@@ -18,7 +19,17 @@ export const withAndroidBuildProperties = createBuildGradlePropsConfigPlugin<Plu
|
|
|
18
19
|
[
|
|
19
20
|
{
|
|
20
21
|
propName: 'newArchEnabled',
|
|
21
|
-
propValueGetter: (config) =>
|
|
22
|
+
propValueGetter: (config) => {
|
|
23
|
+
if (config.android?.newArchEnabled !== undefined) {
|
|
24
|
+
WarningAggregator.addWarningAndroid(
|
|
25
|
+
'withAndroidBuildProperties',
|
|
26
|
+
'android.newArchEnabled is deprecated, use app config `newArchEnabled` instead.',
|
|
27
|
+
'https://docs.expo.dev/versions/latest/config/app/#newarchenabled'
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return config.android?.newArchEnabled?.toString();
|
|
32
|
+
},
|
|
22
33
|
},
|
|
23
34
|
{
|
|
24
35
|
propName: 'android.minSdkVersion',
|
package/src/ios.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
IOSConfig,
|
|
3
|
+
ConfigPlugin,
|
|
4
|
+
withXcodeProject,
|
|
5
|
+
XcodeProject,
|
|
6
|
+
WarningAggregator,
|
|
7
|
+
} from 'expo/config-plugins';
|
|
2
8
|
|
|
3
9
|
import type { PluginConfigType } from './pluginConfig';
|
|
4
10
|
|
|
@@ -8,7 +14,16 @@ export const withIosBuildProperties = createBuildPodfilePropsConfigPlugin<Plugin
|
|
|
8
14
|
[
|
|
9
15
|
{
|
|
10
16
|
propName: 'newArchEnabled',
|
|
11
|
-
propValueGetter: (config) =>
|
|
17
|
+
propValueGetter: (config) => {
|
|
18
|
+
if (config.ios?.newArchEnabled !== undefined) {
|
|
19
|
+
WarningAggregator.addWarningIOS(
|
|
20
|
+
'withIosBuildProperties',
|
|
21
|
+
'ios.newArchEnabled is deprecated, use app config `newArchEnabled` instead.',
|
|
22
|
+
'https://docs.expo.dev/versions/latest/config/app/#newarchenabled'
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
return config.ios?.newArchEnabled?.toString();
|
|
26
|
+
},
|
|
12
27
|
},
|
|
13
28
|
{
|
|
14
29
|
propName: 'ios.useFrameworks',
|
|
@@ -73,8 +88,7 @@ function updateDeploymentTargetXcodeProject(
|
|
|
73
88
|
.map(([_, target]) => target.buildConfigurationList);
|
|
74
89
|
|
|
75
90
|
for (const buildConfigListId of targetBuildConfigListIds) {
|
|
76
|
-
|
|
77
|
-
for (const [_, configurations] of IOSConfig.XcodeUtils.getBuildConfigurationsForListId(
|
|
91
|
+
for (const [, configurations] of IOSConfig.XcodeUtils.getBuildConfigurationsForListId(
|
|
78
92
|
project,
|
|
79
93
|
buildConfigListId
|
|
80
94
|
)) {
|
package/src/pluginConfig.ts
CHANGED
|
@@ -13,7 +13,7 @@ const EXPO_SDK_MINIMAL_SUPPORTED_VERSIONS = {
|
|
|
13
13
|
kotlinVersion: '1.6.10',
|
|
14
14
|
},
|
|
15
15
|
ios: {
|
|
16
|
-
deploymentTarget: '
|
|
16
|
+
deploymentTarget: '15.1',
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
|
|
@@ -39,6 +39,7 @@ export interface PluginConfigType {
|
|
|
39
39
|
*/
|
|
40
40
|
export interface PluginConfigTypeAndroid {
|
|
41
41
|
/**
|
|
42
|
+
* @deprecated Use app config [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) instead.
|
|
42
43
|
* Enable React Native new architecture for Android platform.
|
|
43
44
|
*/
|
|
44
45
|
newArchEnabled?: boolean;
|
|
@@ -83,7 +84,7 @@ export interface PluginConfigTypeAndroid {
|
|
|
83
84
|
*/
|
|
84
85
|
extraProguardRules?: string;
|
|
85
86
|
/**
|
|
86
|
-
* Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
87
|
+
* Interface representing available configuration for Android Gradle plugin [`PackagingOptions`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
87
88
|
*/
|
|
88
89
|
packagingOptions?: PluginConfigTypeAndroidPackagingOptions;
|
|
89
90
|
|
|
@@ -94,10 +95,11 @@ export interface PluginConfigTypeAndroid {
|
|
|
94
95
|
*/
|
|
95
96
|
networkInspector?: boolean;
|
|
96
97
|
|
|
98
|
+
// For the implementation details, this property is actually handled by `expo-modules-autolinking`
|
|
99
|
+
// not the config-plugins inside `expo-build-properties`
|
|
97
100
|
/**
|
|
98
101
|
* Add extra maven repositories to all gradle projects.
|
|
99
102
|
*
|
|
100
|
-
*
|
|
101
103
|
* Takes an array of objects or strings.
|
|
102
104
|
* Strings are passed as the `url` property of the object with no credentials or authentication scheme.
|
|
103
105
|
*
|
|
@@ -112,7 +114,6 @@ export interface PluginConfigTypeAndroid {
|
|
|
112
114
|
* ```
|
|
113
115
|
*
|
|
114
116
|
* By using an `AndroidMavenRepository` object, you can specify credentials and an authentication scheme.
|
|
115
|
-
*
|
|
116
117
|
* ```groovy
|
|
117
118
|
* allprojects {
|
|
118
119
|
* repositories {
|
|
@@ -131,9 +132,6 @@ export interface PluginConfigTypeAndroid {
|
|
|
131
132
|
* ```
|
|
132
133
|
*
|
|
133
134
|
* @see [Gradle documentation](https://docs.gradle.org/current/userguide/declaring_repositories.html#sec:case-for-maven)
|
|
134
|
-
*
|
|
135
|
-
* @hide For the implementation details,
|
|
136
|
-
* this property is actually handled by `expo-modules-autolinking` not the config-plugins inside `expo-build-properties`
|
|
137
135
|
*/
|
|
138
136
|
extraMavenRepos?: (AndroidMavenRepository | string)[];
|
|
139
137
|
/**
|
|
@@ -161,6 +159,10 @@ export interface PluginConfigTypeAndroid {
|
|
|
161
159
|
manifestQueries?: PluginConfigTypeAndroidQueries;
|
|
162
160
|
}
|
|
163
161
|
|
|
162
|
+
// @docsMissing
|
|
163
|
+
/**
|
|
164
|
+
* @platform android
|
|
165
|
+
*/
|
|
164
166
|
export interface AndroidMavenRepository {
|
|
165
167
|
/**
|
|
166
168
|
* The URL of the Maven repository.
|
|
@@ -170,7 +172,7 @@ export interface AndroidMavenRepository {
|
|
|
170
172
|
* The credentials to use when accessing the Maven repository.
|
|
171
173
|
* May be of type PasswordCredentials, HttpHeaderCredentials, or AWSCredentials.
|
|
172
174
|
*
|
|
173
|
-
* @see
|
|
175
|
+
* @see The authentication schemes section of [Gradle documentation](https://docs.gradle.org/current/userguide/declaring_repositories.html#sec:authentication_schemes) for more information.
|
|
174
176
|
*/
|
|
175
177
|
credentials?: AndroidMavenRepositoryCredentials;
|
|
176
178
|
/**
|
|
@@ -179,23 +181,39 @@ export interface AndroidMavenRepository {
|
|
|
179
181
|
authentication?: 'basic' | 'digest' | 'header';
|
|
180
182
|
}
|
|
181
183
|
|
|
182
|
-
|
|
184
|
+
// @docsMissing
|
|
185
|
+
/**
|
|
186
|
+
* @platform android
|
|
187
|
+
*/
|
|
188
|
+
export interface AndroidMavenRepositoryPasswordCredentials {
|
|
183
189
|
username: string;
|
|
184
190
|
password: string;
|
|
185
191
|
}
|
|
186
192
|
|
|
187
|
-
|
|
193
|
+
// @docsMissing
|
|
194
|
+
/**
|
|
195
|
+
* @platform android
|
|
196
|
+
*/
|
|
197
|
+
export interface AndroidMavenRepositoryHttpHeaderCredentials {
|
|
188
198
|
name: string;
|
|
189
199
|
value: string;
|
|
190
200
|
}
|
|
191
201
|
|
|
192
|
-
|
|
202
|
+
// @docsMissing
|
|
203
|
+
/**
|
|
204
|
+
* @platform android
|
|
205
|
+
*/
|
|
206
|
+
export interface AndroidMavenRepositoryAWSCredentials {
|
|
193
207
|
accessKey: string;
|
|
194
208
|
secretKey: string;
|
|
195
209
|
sessionToken?: string;
|
|
196
210
|
}
|
|
197
211
|
|
|
198
|
-
|
|
212
|
+
// @docsMissing
|
|
213
|
+
/**
|
|
214
|
+
* @platform android
|
|
215
|
+
*/
|
|
216
|
+
export type AndroidMavenRepositoryCredentials =
|
|
199
217
|
| AndroidMavenRepositoryPasswordCredentials
|
|
200
218
|
| AndroidMavenRepositoryHttpHeaderCredentials
|
|
201
219
|
| AndroidMavenRepositoryAWSCredentials;
|
|
@@ -206,6 +224,7 @@ type AndroidMavenRepositoryCredentials =
|
|
|
206
224
|
*/
|
|
207
225
|
export interface PluginConfigTypeIos {
|
|
208
226
|
/**
|
|
227
|
+
* @deprecated Use app config [`newArchEnabled`](https://docs.expo.dev/versions/latest/config/app/#newarchenabled) instead.
|
|
209
228
|
* Enable React Native new architecture for iOS platform.
|
|
210
229
|
*/
|
|
211
230
|
newArchEnabled?: boolean;
|
|
@@ -229,18 +248,27 @@ export interface PluginConfigTypeIos {
|
|
|
229
248
|
*/
|
|
230
249
|
networkInspector?: boolean;
|
|
231
250
|
|
|
251
|
+
// For the implementation details, this property is actually handled by `expo-modules-autolinking`
|
|
252
|
+
// but not the config-plugins inside `expo-build-properties`.
|
|
232
253
|
/**
|
|
233
254
|
* Add extra CocoaPods dependencies for all targets.
|
|
234
255
|
*
|
|
235
|
-
* This
|
|
256
|
+
* This configuration is responsible for adding the new Pod entries to **ios/Podfile**.
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* Creating entry in the configuration like below:
|
|
260
|
+
* ```json
|
|
261
|
+
* [
|
|
262
|
+
* {
|
|
263
|
+
* name: "Protobuf",
|
|
264
|
+
* version: "~> 3.14.0",
|
|
265
|
+
* }
|
|
266
|
+
* ]
|
|
236
267
|
* ```
|
|
237
|
-
*
|
|
238
|
-
*
|
|
268
|
+
* Will produce the following entry in the generated **ios/Podfile**:
|
|
269
|
+
* ```ruby
|
|
239
270
|
* pod 'Protobuf', '~> 3.14.0'
|
|
240
271
|
* ```
|
|
241
|
-
*
|
|
242
|
-
* @hide For the implementation details,
|
|
243
|
-
* this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties.
|
|
244
272
|
*/
|
|
245
273
|
extraPods?: ExtraIosPodDependency[];
|
|
246
274
|
|
|
@@ -249,8 +277,8 @@ export interface PluginConfigTypeIos {
|
|
|
249
277
|
*
|
|
250
278
|
* This speeds up compiling C++ code by caching the results of previous compilations.
|
|
251
279
|
*
|
|
252
|
-
* @see https://reactnative.dev/docs/build-speed#local-caches
|
|
253
|
-
*
|
|
280
|
+
* @see [React Native's documentation on local caches](https://reactnative.dev/docs/build-speed#local-caches) and
|
|
281
|
+
* [Ccache documentation](https://ccache.dev/).
|
|
254
282
|
*/
|
|
255
283
|
ccacheEnabled?: boolean;
|
|
256
284
|
|
|
@@ -259,8 +287,8 @@ export interface PluginConfigTypeIos {
|
|
|
259
287
|
* CocoaPods resource bundles. If enabled, the manifests will be merged into a
|
|
260
288
|
* single file. If not enabled, developers will need to manually aggregate them.
|
|
261
289
|
*
|
|
262
|
-
* @see https://docs.expo.dev/guides/apple-privacy/
|
|
263
|
-
*
|
|
290
|
+
* @see [Privacy manifests](https://docs.expo.dev/guides/apple-privacy/) guide
|
|
291
|
+
* and [Apple's documentation on Privacy manifest files](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files).
|
|
264
292
|
*/
|
|
265
293
|
privacyManifestAggregationEnabled?: boolean;
|
|
266
294
|
}
|
|
@@ -330,12 +358,17 @@ export interface ExtraIosPodDependency {
|
|
|
330
358
|
* Use the bleeding edge version of a Pod.
|
|
331
359
|
*
|
|
332
360
|
* @example
|
|
333
|
-
* ```
|
|
334
|
-
* {
|
|
361
|
+
* ```json
|
|
362
|
+
* {
|
|
363
|
+
* "name": "AFNetworking",
|
|
364
|
+
* "git": "https://github.com/gowalla/AFNetworking.git",
|
|
365
|
+
* "tag": "0.7.0"
|
|
366
|
+
* }
|
|
335
367
|
* ```
|
|
336
368
|
*
|
|
337
369
|
* This acts like to add this pod dependency statement:
|
|
338
|
-
*
|
|
370
|
+
*
|
|
371
|
+
* ```rb
|
|
339
372
|
* pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
|
|
340
373
|
* ```
|
|
341
374
|
*/
|
|
@@ -355,7 +388,7 @@ export interface ExtraIosPodDependency {
|
|
|
355
388
|
}
|
|
356
389
|
|
|
357
390
|
/**
|
|
358
|
-
* Interface representing available configuration for Android Gradle plugin [PackagingOptions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
391
|
+
* Interface representing available configuration for Android Gradle plugin [`PackagingOptions`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions).
|
|
359
392
|
* @platform android
|
|
360
393
|
*/
|
|
361
394
|
export interface PluginConfigTypeAndroidPackagingOptions {
|
|
@@ -377,13 +410,17 @@ export interface PluginConfigTypeAndroidPackagingOptions {
|
|
|
377
410
|
doNotStrip?: string[];
|
|
378
411
|
}
|
|
379
412
|
|
|
413
|
+
// @docsMissing
|
|
414
|
+
/**
|
|
415
|
+
* @platform android
|
|
416
|
+
*/
|
|
380
417
|
export interface PluginConfigTypeAndroidQueries {
|
|
381
418
|
/**
|
|
382
419
|
* Specifies one or more apps that your app intends to access. These other apps might integrate with your app, or your app might use services that these other apps provide.
|
|
383
420
|
*/
|
|
384
421
|
package?: string[];
|
|
385
422
|
/**
|
|
386
|
-
* Specifies an intent filter signature. Your app can discover other apps that have matching
|
|
423
|
+
* Specifies an intent filter signature. Your app can discover other apps that have matching `<intent-filter>` elements.
|
|
387
424
|
* These intents have restrictions compared to typical intent filter signatures.
|
|
388
425
|
*
|
|
389
426
|
* @see [Android documentation](https://developer.android.com/training/package-visibility/declaring#intent-filter-signature) for details
|
|
@@ -391,14 +428,18 @@ export interface PluginConfigTypeAndroidQueries {
|
|
|
391
428
|
intent?: PluginConfigTypeAndroidQueriesIntent[];
|
|
392
429
|
/**
|
|
393
430
|
* Specifies one or more content provider authorities. Your app can discover other apps whose content providers use the specified authorities.
|
|
394
|
-
* There are some restrictions on the options that you can include in this
|
|
431
|
+
* There are some restrictions on the options that you can include in this `<provider>` element, compared to a typical `<provider>` manifest element. You may only specify the `android:authorities` attribute.
|
|
395
432
|
*/
|
|
396
433
|
provider?: string[];
|
|
397
434
|
}
|
|
398
435
|
|
|
436
|
+
// @docsMissing
|
|
437
|
+
/**
|
|
438
|
+
* @platform android
|
|
439
|
+
*/
|
|
399
440
|
export interface PluginConfigTypeAndroidQueriesIntent {
|
|
400
441
|
/**
|
|
401
|
-
* A string naming the action to perform. Usually one of the platform-defined values, such as ACTION_SEND or ACTION_VIEW
|
|
442
|
+
* A string naming the action to perform. Usually one of the platform-defined values, such as `ACTION_SEND` or `ACTION_VIEW`.
|
|
402
443
|
*/
|
|
403
444
|
action?: string;
|
|
404
445
|
/**
|
|
@@ -412,6 +453,10 @@ export interface PluginConfigTypeAndroidQueriesIntent {
|
|
|
412
453
|
category?: string | string[];
|
|
413
454
|
}
|
|
414
455
|
|
|
456
|
+
// @docsMissing
|
|
457
|
+
/**
|
|
458
|
+
* @platform android
|
|
459
|
+
*/
|
|
415
460
|
export interface PluginConfigTypeAndroidQueriesData {
|
|
416
461
|
/**
|
|
417
462
|
* Specify a URI scheme that is handled
|