1/** 2 * Interface representing base build properties configuration. 3 */ 4export interface PluginConfigType { 5 /** 6 * Interface representing available configuration for Android native build properties. 7 * @platform android 8 */ 9 android?: PluginConfigTypeAndroid; 10 /** 11 * Interface representing available configuration for iOS native build properties. 12 * @platform ios 13 */ 14 ios?: PluginConfigTypeIos; 15} 16/** 17 * Interface representing available configuration for Android native build properties. 18 * @platform android 19 */ 20export interface PluginConfigTypeAndroid { 21 /** 22 * Enable React Native new architecture for Android platform. 23 */ 24 newArchEnabled?: boolean; 25 /** 26 * Override the default `minSdkVersion` version number in **build.gradle**. 27 * */ 28 minSdkVersion?: number; 29 /** 30 * Override the default `compileSdkVersion` version number in **build.gradle**. 31 */ 32 compileSdkVersion?: number; 33 /** 34 * Override the default `targetSdkVersion` version number in **build.gradle**. 35 */ 36 targetSdkVersion?: number; 37 /** 38 * Override the default `buildToolsVersion` version number in **build.gradle**. 39 */ 40 buildToolsVersion?: string; 41 /** 42 * Override the Kotlin version used when building the app. 43 */ 44 kotlinVersion?: string; 45 /** 46 * Enable [Proguard or R8](https://developer.android.com/studio/build/shrink-code) in release builds to obfuscate Java code and reduce app size. 47 */ 48 enableProguardInReleaseBuilds?: boolean; 49 /** 50 * Enable [`shrinkResources`](https://developer.android.com/studio/build/shrink-code#shrink-resources) in release builds to remove unused resources from the app. 51 * This property should be used in combination with `enableProguardInReleaseBuilds`. 52 */ 53 enableShrinkResourcesInReleaseBuilds?: boolean; 54 /** 55 * Append custom [Proguard rules](https://www.guardsquare.com/manual/configuration/usage) to **android/app/proguard-rules.pro**. 56 */ 57 extraProguardRules?: string; 58 /** 59 * 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). 60 */ 61 packagingOptions?: PluginConfigTypeAndroidPackagingOptions; 62 /** 63 * By default, Flipper is enabled with the version that comes bundled with `react-native`. 64 * 65 * Use this to change the [Flipper](https://fbflipper.com/) version when 66 * running your app on Android. You can set the `flipper` property to a 67 * semver string and specify an alternate Flipper version. 68 */ 69 flipper?: string; 70 /** 71 * Enable the Network Inspector. 72 * 73 * @default true 74 */ 75 networkInspector?: boolean; 76 /** 77 * Add extra maven repositories to all gradle projects. 78 * 79 * This acts like to add the following code to **android/build.gradle**: 80 * ```groovy 81 * allprojects { 82 * repositories { 83 * maven { 84 * url [THE_EXTRA_MAVEN_REPOSITORY] 85 * } 86 * } 87 * } 88 * ``` 89 * 90 * @hide For the implementation details, 91 * this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties. 92 */ 93 extraMavenRepos?: string[]; 94 /** 95 * Indicates whether the app intends to use cleartext network traffic. 96 * 97 * @default false 98 * 99 * @see [Android documentation](https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic) 100 */ 101 usesCleartextTraffic?: boolean; 102} 103/** 104 * Interface representing available configuration for iOS native build properties. 105 * @platform ios 106 */ 107export interface PluginConfigTypeIos { 108 /** 109 * Enable React Native new architecture for iOS platform. 110 */ 111 newArchEnabled?: boolean; 112 /** 113 * Override the default iOS "Deployment Target" version in the following projects: 114 * - in CocoaPods projects, 115 * - `PBXNativeTarget` with "com.apple.product-type.application" `productType` in the app project. 116 */ 117 deploymentTarget?: string; 118 /** 119 * Enable [`use_frameworks!`](https://guides.cocoapods.org/syntax/podfile.html#use_frameworks_bang) 120 * in `Podfile` to use frameworks instead of static libraries for Pods. 121 * 122 * > You cannot use `useFrameworks` and `flipper` at the same time, and 123 * doing so will generate an error. 124 */ 125 useFrameworks?: 'static' | 'dynamic'; 126 /** 127 * Enable [Flipper](https://fbflipper.com/) when running your app on iOS in 128 * Debug mode. Setting `true` enables the default version of Flipper, while 129 * setting a semver string will enable a specific version of Flipper you've 130 * declared in your **package.json**. The default for this configuration is `false`. 131 * 132 * > You cannot use `flipper` at the same time as `useFrameworks`, and 133 * doing so will generate an error. 134 */ 135 flipper?: boolean | string; 136 /** 137 * Enable the Network Inspector. 138 * 139 * @default true 140 */ 141 networkInspector?: boolean; 142 /** 143 * Add extra CocoaPods dependencies for all targets. 144 * 145 * This acts like to add the following code to **ios/Podfile**: 146 * ``` 147 * pod '[EXTRA_POD_NAME]', '~> [EXTRA_POD_VERSION]' 148 * # e.g. 149 * pod 'Protobuf', '~> 3.14.0' 150 * ``` 151 * 152 * @hide For the implementation details, 153 * this property is actually handled by `expo-modules-autolinking` but not the config-plugins inside expo-build-properties. 154 */ 155 extraPods?: ExtraIosPodDependency[]; 156} 157/** 158 * Interface representing extra CocoaPods dependency. 159 * @see [Podfile syntax reference](https://guides.cocoapods.org/syntax/podfile.html#pod) 160 * @platform ios 161 */ 162export interface ExtraIosPodDependency { 163 /** 164 * Name of the pod. 165 */ 166 name: string; 167 /** 168 * Version of the pod. 169 * CocoaPods supports various [versioning options](https://guides.cocoapods.org/using/the-podfile.html#pod). 170 * @example `~> 0.1.2` 171 */ 172 version?: string; 173 /** 174 * Build configurations for which the pod should be installed. 175 * @example `['Debug', 'Release']` 176 */ 177 configurations?: string[]; 178 /** 179 * Whether this pod should use modular headers. 180 */ 181 modular_headers?: boolean; 182 /** 183 * Custom source to search for this dependency. 184 * @example `https://github.com/CocoaPods/Specs.git` 185 */ 186 source?: string; 187 /** 188 * Custom local filesystem path to add the dependency. 189 * @example `~/Documents/AFNetworking` 190 */ 191 path?: string; 192 /** 193 * Custom podspec path. 194 * @example `https://example.com/JSONKit.podspec` 195 */ 196 podspec?: string; 197 /** 198 * Test specs can be optionally included via the :testspecs option. By default, none of a Pod's test specs are included. 199 * @example `['UnitTests', 'SomeOtherTests']` 200 */ 201 testspecs?: string[]; 202 /** 203 * Use the bleeding edge version of a Pod. 204 * 205 * @example 206 * ``` 207 * { "name": "AFNetworking", "git": "https://github.com/gowalla/AFNetworking.git", "tag": "0.7.0" } 208 * ``` 209 * 210 * This acts like to add this pod dependency statement: 211 * ``` 212 * pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0' 213 * ``` 214 */ 215 git?: string; 216 /** 217 * The git branch to fetch. See the {@link git} property for more information. 218 */ 219 branch?: string; 220 /** 221 * The git tag to fetch. See the {@link git} property for more information. 222 */ 223 tag?: string; 224 /** 225 * The git commit to fetch. See the {@link git} property for more information. 226 */ 227 commit?: string; 228} 229/** 230 * 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). 231 * @platform android 232 */ 233export interface PluginConfigTypeAndroidPackagingOptions { 234 /** 235 * Array of patterns for native libraries where only the first occurrence is packaged in the APK. 236 */ 237 pickFirst?: string[]; 238 /** 239 * Array of patterns for native libraries that should be excluded from being packaged in the APK. 240 */ 241 exclude?: string[]; 242 /** 243 * Array of patterns for native libraries where all occurrences are concatenated and packaged in the APK. 244 */ 245 merge?: string[]; 246 /** 247 * Array of patterns for native libraries that should not be stripped of debug symbols. 248 */ 249 doNotStrip?: string[]; 250} 251/** 252 * @ignore 253 */ 254export declare function validateConfig(config: any): PluginConfigType; 255