vxrn 2.13.2 → 2.13.4

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.
@@ -3,7 +3,7 @@ import { createHash } from "crypto";
3
3
  import module from "module";
4
4
  import path from "path";
5
5
  import { pathToFileURL } from "url";
6
- import { androidIconSuffix, appIconPreviewResources, iosUsageDescriptions, validateNativeApp } from "@vxrn/utils/nativeAppManifest";
6
+ import { androidAppPermissions, androidIconSuffix, appIconPreviewResources, iosUsageDescriptions, validateNativeApp } from "@vxrn/utils/nativeAppManifest";
7
7
  import FSExtra from "fs-extra";
8
8
  import sharp from "sharp";
9
9
  import { swiftPackageDirectories } from "../utils/swiftPackageId.native.js";
@@ -1970,7 +1970,7 @@ function renderPrebuildFile(args) {
1970
1970
  }
1971
1971
  destRelativePath = destRelativePath.replace(/HelloWorld/g, appName).replace(/helloworld/g, appName.toLowerCase());
1972
1972
  if (content !== null) {
1973
- var _app_imagePicker, _app_notifications, _app_ios, _app_android, _app_notifications1, _app_android1, _app_android_permissions, _app_android2, _app_android_blockedPermissions, _app_android3, _app_android_appLinks, _app_android4, _app_android5, _app_android6, _app_android7;
1973
+ var _app_notifications, _app_ios, _app_android, _app_notifications1, _app_android1, _app_android_appLinks, _app_android2, _app_android3, _app_android4, _app_android5;
1974
1974
  var rendered = content;
1975
1975
  var replacements = [];
1976
1976
  if (platform === "ios" && app.ios) {
@@ -2149,61 +2149,51 @@ ${phoneOrientations.map(function(orientation) {
2149
2149
  ${anchor}`);
2150
2150
  }
2151
2151
  }
2152
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && (((_app_imagePicker = app.imagePicker) === null || _app_imagePicker === void 0 ? void 0 : _app_imagePicker.camera) !== void 0 || app.speech !== void 0)) {
2153
- var _app_imagePicker1;
2154
- var anchor1 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2155
- if (!rendered.includes(anchor1)) {
2156
- throw new Error("[vxrn] cannot stamp the camera or microphone permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2157
- }
2158
- var stamps1 = [];
2159
- if (((_app_imagePicker1 = app.imagePicker) === null || _app_imagePicker1 === void 0 ? void 0 : _app_imagePicker1.camera) !== void 0) {
2160
- stamps1.push(" <uses-permission android:name=\"android.permission.CAMERA\" />");
2152
+ if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml") {
2153
+ var _app_android_blockedPermissions, _app_android6;
2154
+ var permissions = androidAppPermissions(app);
2155
+ if (permissions.size || ((_app_android6 = app.android) === null || _app_android6 === void 0 ? void 0 : (_app_android_blockedPermissions = _app_android6.blockedPermissions) === null || _app_android_blockedPermissions === void 0 ? void 0 : _app_android_blockedPermissions.length)) {
2156
+ var _ref3, _ref4;
2157
+ var _app_android7, _app_android8, _app_android_blockedPermissions1, _app_android9;
2158
+ var anchor1 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2159
+ if (!rendered.includes(anchor1)) {
2160
+ var _app_imagePicker;
2161
+ var feature = ((_app_imagePicker = app.imagePicker) === null || _app_imagePicker === void 0 ? void 0 : _app_imagePicker.camera) !== void 0 || app.speech !== void 0 ? "the camera or microphone permission" : app.notifications !== void 0 ? "notification permissions" : "permissions";
2162
+ throw new Error(`[vxrn] cannot stamp ${feature}: expected the INTERNET permission in app/src/main/AndroidManifest.xml`);
2163
+ }
2164
+ var blocked = new Set(((_ref3 = (_app_android7 = app.android) === null || _app_android7 === void 0 ? void 0 : _app_android7.blockedPermissions) !== null && _ref3 !== void 0 ? _ref3 : []).map(function(name) {
2165
+ return name.includes(".") ? name : `android.permission.${name}`;
2166
+ }));
2167
+ var lines = [...[...permissions].filter(function(param) {
2168
+ var [name] = param;
2169
+ return !blocked.has(name);
2170
+ }).map(function(param) {
2171
+ var [name, maxSdk] = param;
2172
+ return ` <uses-permission android:name="${name}"${maxSdk === void 0 ? "" : ` android:maxSdkVersion="${maxSdk}"`} />`;
2173
+ }), ...((_ref4 = (_app_android8 = app.android) === null || _app_android8 === void 0 ? void 0 : _app_android8.blockedPermissions) !== null && _ref4 !== void 0 ? _ref4 : []).map(function(name) {
2174
+ return ` <uses-permission android:name="${name.includes(".") ? name : `android.permission.${name}`}" tools:node="remove" />`;
2175
+ })];
2176
+ rendered = rendered.replace(anchor1, `${anchor1}
2177
+ ${lines.join("\n")}`);
2178
+ if (((_app_android9 = app.android) === null || _app_android9 === void 0 ? void 0 : (_app_android_blockedPermissions1 = _app_android9.blockedPermissions) === null || _app_android_blockedPermissions1 === void 0 ? void 0 : _app_android_blockedPermissions1.length) && !rendered.includes("xmlns:tools=")) {
2179
+ rendered = rendered.replace("xmlns:android=\"http://schemas.android.com/apk/res/android\"", "xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"");
2180
+ }
2161
2181
  }
2162
2182
  if (app.speech !== void 0) {
2163
- stamps1.push(" <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />", " <queries>\n <intent>\n <action android:name=\"android.speech.RecognitionService\" />\n </intent>\n </queries>");
2183
+ var anchor2 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2184
+ rendered = rendered.replace(anchor2, `${anchor2}
2185
+ <queries>
2186
+ <intent>
2187
+ <action android:name="android.speech.RecognitionService" />
2188
+ </intent>
2189
+ </queries>`);
2164
2190
  }
2165
- rendered = rendered.replace(anchor1, `${anchor1}
2166
- ${stamps1.join("\n")}`);
2167
2191
  }
2168
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.location !== void 0) {
2169
- var anchor2 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2170
- if (!rendered.includes(anchor2)) {
2171
- throw new Error("[vxrn] cannot stamp location permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2172
- }
2173
- var stamps2 = [" <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", " <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />"];
2174
- if (app.location.background) {
2175
- stamps2.push(" <uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />");
2176
- }
2177
- rendered = rendered.replace(anchor2, `${anchor2}
2178
- ${stamps2.join("\n")}`);
2179
- }
2180
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.pedometer !== void 0) {
2192
+ if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.notifications !== void 0) {
2181
2193
  var anchor3 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2182
2194
  if (!rendered.includes(anchor3)) {
2183
- throw new Error("[vxrn] cannot stamp the pedometer permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2184
- }
2185
- rendered = rendered.replace(anchor3, `${anchor3}
2186
- <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />`);
2187
- }
2188
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.brightness === true) {
2189
- var anchor4 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2190
- if (!rendered.includes(anchor4)) {
2191
- throw new Error("[vxrn] cannot stamp the brightness permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2192
- }
2193
- rendered = rendered.replace(anchor4, `${anchor4}
2194
- <uses-permission android:name="android.permission.WRITE_SETTINGS" />`);
2195
- }
2196
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.notifications !== void 0) {
2197
- var anchor5 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2198
- if (!rendered.includes(anchor5)) {
2199
2195
  throw new Error("[vxrn] cannot stamp notification permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2200
2196
  }
2201
- rendered = rendered.replace(anchor5, [anchor5, ...notificationsHost.androidPermissions.map(function(permission) {
2202
- return ` <uses-permission android:name="${permission}" />`;
2203
- })].join("\n"));
2204
- if (!rendered.includes(notificationsHost.androidPermissions[0])) {
2205
- throw new Error("[vxrn] failed to stamp notification permissions into app manifest");
2206
- }
2207
2197
  rendered = rendered.replace(" </activity>\n </application>", ` </activity>
2208
2198
  <receiver android:name="${notificationsHost.receiver}" android:exported="false">
2209
2199
  <intent-filter>
@@ -2216,8 +2206,8 @@ ${stamps2.join("\n")}`);
2216
2206
  }
2217
2207
  }
2218
2208
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && ((_app_notifications = app.notifications) === null || _app_notifications === void 0 ? void 0 : _app_notifications.push) === true) {
2219
- var anchor6 = notificationsHost.receiver;
2220
- if (!rendered.includes(anchor6)) {
2209
+ var anchor4 = notificationsHost.receiver;
2210
+ if (!rendered.includes(anchor4)) {
2221
2211
  throw new Error("[vxrn] cannot stamp the push service: expected the notification receiver in app/src/main/AndroidManifest.xml");
2222
2212
  }
2223
2213
  rendered = rendered.replace(" </receiver>\n </application>", ` </receiver>
@@ -2232,50 +2222,19 @@ ${stamps2.join("\n")}`);
2232
2222
  }
2233
2223
  }
2234
2224
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && (app.audio !== void 0 || app.photoLibrary !== void 0 || app.contacts !== void 0 || app.calendar !== void 0 || ((_app_ios = app.ios) === null || _app_ios === void 0 ? void 0 : _app_ios.backgroundTasks) !== void 0)) {
2235
- var _app_audio1, _app_photoLibrary1, _app_photoLibrary2, _app_calendar, _app_calendar1, _app_audio2, _app_calendar2, _app_photoLibrary3, _app_audio3, _app_ios9;
2236
- var anchor7 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2237
- if (!rendered.includes(anchor7)) {
2225
+ var _app_calendar, _app_photoLibrary1, _app_audio1, _app_ios9;
2226
+ var anchor5 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2227
+ if (!rendered.includes(anchor5)) {
2238
2228
  throw new Error("[vxrn] cannot stamp media permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2239
2229
  }
2240
- var stamps3 = [];
2241
- if (((_app_audio1 = app.audio) === null || _app_audio1 === void 0 ? void 0 : _app_audio1.microphone) !== void 0 && !rendered.includes("android.permission.RECORD_AUDIO")) {
2242
- stamps3.push(" <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />");
2243
- }
2244
- if (((_app_photoLibrary1 = app.photoLibrary) === null || _app_photoLibrary1 === void 0 ? void 0 : _app_photoLibrary1.readWrite) !== void 0) {
2245
- stamps3.push(" <uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />", " <uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />", " <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" android:maxSdkVersion=\"32\" />");
2246
- }
2247
- if (((_app_photoLibrary2 = app.photoLibrary) === null || _app_photoLibrary2 === void 0 ? void 0 : _app_photoLibrary2.addOnly) !== void 0) {
2248
- stamps3.push(" <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" android:maxSdkVersion=\"28\" />");
2249
- }
2250
- if (app.contacts !== void 0) {
2251
- stamps3.push(" <uses-permission android:name=\"android.permission.READ_CONTACTS\" />", " <uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />");
2252
- }
2253
- if (((_app_calendar = app.calendar) === null || _app_calendar === void 0 ? void 0 : _app_calendar.usage) !== void 0) {
2254
- stamps3.push(" <uses-permission android:name=\"android.permission.READ_CALENDAR\" />", " <uses-permission android:name=\"android.permission.WRITE_CALENDAR\" />");
2255
- }
2256
- if (((_app_calendar1 = app.calendar) === null || _app_calendar1 === void 0 ? void 0 : _app_calendar1.remindersUsage) !== void 0) {
2257
- if (!rendered.includes("android.permission.POST_NOTIFICATIONS")) {
2258
- stamps3.push(" <uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />");
2259
- }
2260
- if (!rendered.includes("android.permission.RECEIVE_BOOT_COMPLETED")) {
2261
- stamps3.push(" <uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />");
2262
- }
2263
- }
2264
- if (((_app_audio2 = app.audio) === null || _app_audio2 === void 0 ? void 0 : _app_audio2.background) === true) {
2265
- stamps3.push(" <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />", " <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK\" />");
2266
- }
2267
- if (stamps3.length) {
2268
- rendered = rendered.replace(anchor7, `${anchor7}
2269
- ${stamps3.join("\n")}`);
2270
- }
2271
2230
  var appStamps = [];
2272
- if (((_app_calendar2 = app.calendar) === null || _app_calendar2 === void 0 ? void 0 : _app_calendar2.remindersUsage) !== void 0) {
2231
+ if (((_app_calendar = app.calendar) === null || _app_calendar === void 0 ? void 0 : _app_calendar.remindersUsage) !== void 0) {
2273
2232
  appStamps.push(" <meta-data android:name=\"one.calendar.reminders\" android:value=\"true\" />");
2274
2233
  }
2275
- if (((_app_photoLibrary3 = app.photoLibrary) === null || _app_photoLibrary3 === void 0 ? void 0 : _app_photoLibrary3.addOnly) !== void 0) {
2234
+ if (((_app_photoLibrary1 = app.photoLibrary) === null || _app_photoLibrary1 === void 0 ? void 0 : _app_photoLibrary1.addOnly) !== void 0) {
2276
2235
  appStamps.push(" <meta-data android:name=\"one.photoLibrary.addOnly\" android:value=\"true\" />");
2277
2236
  }
2278
- if (((_app_audio3 = app.audio) === null || _app_audio3 === void 0 ? void 0 : _app_audio3.background) === true) {
2237
+ if (((_app_audio1 = app.audio) === null || _app_audio1 === void 0 ? void 0 : _app_audio1.background) === true) {
2279
2238
  appStamps.push(" <meta-data android:name=\"one.audio.background\" android:value=\"true\" />", " <service android:name=\"com.margelo.nitro.one.OneAudioService\" android:exported=\"false\" android:foregroundServiceType=\"mediaPlayback\" />");
2280
2239
  }
2281
2240
  if (((_app_ios9 = app.ios) === null || _app_ios9 === void 0 ? void 0 : _app_ios9.backgroundTasks) !== void 0) {
@@ -2302,17 +2261,17 @@ ${appAnchor}`);
2302
2261
  rendered = patchAndroidMainApplicationUpdatesHost(rendered);
2303
2262
  }
2304
2263
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.updates !== void 0) {
2305
- var anchor8 = " </application>";
2306
- if (!rendered.includes(anchor8)) {
2264
+ var anchor6 = " </application>";
2265
+ if (!rendered.includes(anchor6)) {
2307
2266
  throw new Error("[vxrn] cannot stamp the updates config: expected </application> in app/src/main/AndroidManifest.xml");
2308
2267
  }
2309
- var stamps4 = [];
2268
+ var stamps1 = [];
2310
2269
  if (app.updates.url !== void 0) {
2311
- stamps4.push(` <meta-data android:name="dev.onejs.updates.url" android:value="${escapeXml(app.updates.url)}" />`);
2270
+ stamps1.push(` <meta-data android:name="dev.onejs.updates.url" android:value="${escapeXml(app.updates.url)}" />`);
2312
2271
  }
2313
- stamps4.push(" <meta-data android:name=\"dev.onejs.updates.runtimeVersion\" android:value=\"@string/one_updates_runtime_version\" />");
2314
- rendered = rendered.replace(anchor8, `${stamps4.join("\n")}
2315
- ${anchor8}`);
2272
+ stamps1.push(" <meta-data android:name=\"dev.onejs.updates.runtimeVersion\" android:value=\"@string/one_updates_runtime_version\" />");
2273
+ rendered = rendered.replace(anchor6, `${stamps1.join("\n")}
2274
+ ${anchor6}`);
2316
2275
  }
2317
2276
  if (platform === "android" && relativePath === "app/src/main/res/values/strings.xml" && app.updates !== void 0) {
2318
2277
  var version = app.updates.runtimeVersion.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
@@ -2320,12 +2279,12 @@ ${anchor8}`);
2320
2279
  </resources>`);
2321
2280
  }
2322
2281
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && ((_app_android = app.android) === null || _app_android === void 0 ? void 0 : _app_android.googleMapsApiKey) !== void 0) {
2323
- var anchor9 = " </application>";
2324
- if (!rendered.includes(anchor9)) {
2282
+ var anchor7 = " </application>";
2283
+ if (!rendered.includes(anchor7)) {
2325
2284
  throw new Error("[vxrn] cannot stamp the maps api key: expected </application> in app/src/main/AndroidManifest.xml");
2326
2285
  }
2327
- rendered = rendered.replace(anchor9, ` <meta-data android:name="com.google.android.geo.API_KEY" android:value="${escapeXml(app.android.googleMapsApiKey)}" />
2328
- ${anchor9}`);
2286
+ rendered = rendered.replace(anchor7, ` <meta-data android:name="com.google.android.geo.API_KEY" android:value="${escapeXml(app.android.googleMapsApiKey)}" />
2287
+ ${anchor7}`);
2329
2288
  }
2330
2289
  if (platform === "android" && relativePath === "gradle.properties" && ((_app_notifications1 = app.notifications) === null || _app_notifications1 === void 0 ? void 0 : _app_notifications1.push) === true) {
2331
2290
  var line = `${notificationsHost.pushGradleProperty}=true`;
@@ -2356,28 +2315,7 @@ ${line1}
2356
2315
  }
2357
2316
  rendered = rendered.replace(dayNight, app.userInterfaceStyle === "light" ? "parent=\"Theme.AppCompat.Light.NoActionBar\"" : "parent=\"Theme.AppCompat.NoActionBar\"");
2358
2317
  }
2359
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && (((_app_android2 = app.android) === null || _app_android2 === void 0 ? void 0 : (_app_android_permissions = _app_android2.permissions) === null || _app_android_permissions === void 0 ? void 0 : _app_android_permissions.length) || ((_app_android3 = app.android) === null || _app_android3 === void 0 ? void 0 : (_app_android_blockedPermissions = _app_android3.blockedPermissions) === null || _app_android_blockedPermissions === void 0 ? void 0 : _app_android_blockedPermissions.length))) {
2360
- var _ref3, _ref4;
2361
- var _app_android8, _app_android9, _app_android_blockedPermissions1, _app_android10;
2362
- var anchor10 = "<uses-permission android:name=\"android.permission.INTERNET\" />";
2363
- if (!rendered.includes(anchor10)) {
2364
- throw new Error("[vxrn] cannot stamp permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml");
2365
- }
2366
- var permissionName = function permissionName2(name) {
2367
- return name.includes(".") ? name : `android.permission.${name}`;
2368
- };
2369
- var lines = [...((_ref3 = (_app_android8 = app.android) === null || _app_android8 === void 0 ? void 0 : _app_android8.permissions) !== null && _ref3 !== void 0 ? _ref3 : []).map(function(name) {
2370
- return ` <uses-permission android:name="${permissionName(name)}" />`;
2371
- }), ...((_ref4 = (_app_android9 = app.android) === null || _app_android9 === void 0 ? void 0 : _app_android9.blockedPermissions) !== null && _ref4 !== void 0 ? _ref4 : []).map(function(name) {
2372
- return ` <uses-permission android:name="${permissionName(name)}" tools:node="remove" />`;
2373
- })];
2374
- rendered = rendered.replace(anchor10, `${anchor10}
2375
- ${lines.join("\n")}`);
2376
- if (((_app_android10 = app.android) === null || _app_android10 === void 0 ? void 0 : (_app_android_blockedPermissions1 = _app_android10.blockedPermissions) === null || _app_android_blockedPermissions1 === void 0 ? void 0 : _app_android_blockedPermissions1.length) && !rendered.includes("xmlns:tools=")) {
2377
- rendered = rendered.replace("xmlns:android=\"http://schemas.android.com/apk/res/android\"", "xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"");
2378
- }
2379
- }
2380
- if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && ((_app_android4 = app.android) === null || _app_android4 === void 0 ? void 0 : (_app_android_appLinks = _app_android4.appLinks) === null || _app_android_appLinks === void 0 ? void 0 : _app_android_appLinks.length)) {
2318
+ if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && ((_app_android2 = app.android) === null || _app_android2 === void 0 ? void 0 : (_app_android_appLinks = _app_android2.appLinks) === null || _app_android_appLinks === void 0 ? void 0 : _app_android_appLinks.length)) {
2381
2319
  rendered = rendered.replace(" </activity>", ` <intent-filter android:autoVerify="true">
2382
2320
  <action android:name="android.intent.action.VIEW" />
2383
2321
  <category android:name="android.intent.category.DEFAULT" />
@@ -2390,19 +2328,19 @@ ${app.android.appLinks.map(function(link) {
2390
2328
  </activity>`);
2391
2329
  }
2392
2330
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.orientation !== void 0) {
2393
- var anchor11 = "android:name=\".MainActivity\"";
2394
- if (!rendered.includes(anchor11)) {
2331
+ var anchor8 = "android:name=\".MainActivity\"";
2332
+ if (!rendered.includes(anchor8)) {
2395
2333
  throw new Error("[vxrn] cannot stamp the orientation: expected .MainActivity in app/src/main/AndroidManifest.xml");
2396
2334
  }
2397
- rendered = rendered.replace(anchor11, `${anchor11}
2335
+ rendered = rendered.replace(anchor8, `${anchor8}
2398
2336
  android:screenOrientation="${app.orientation === "default" ? "unspecified" : app.orientation}"`);
2399
2337
  }
2400
2338
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && app.pictureInPicture) {
2401
- var anchor12 = "android:name=\".MainActivity\"";
2402
- if (!rendered.includes(anchor12)) {
2339
+ var anchor9 = "android:name=\".MainActivity\"";
2340
+ if (!rendered.includes(anchor9)) {
2403
2341
  throw new Error("[vxrn] cannot stamp picture in picture: expected .MainActivity in app/src/main/AndroidManifest.xml");
2404
2342
  }
2405
- rendered = rendered.replace(anchor12, `${anchor12}
2343
+ rendered = rendered.replace(anchor9, `${anchor9}
2406
2344
  android:supportsPictureInPicture="true"`);
2407
2345
  }
2408
2346
  if (platform === "android" && relativePath === "app/src/main/AndroidManifest.xml" && schemes.length) {
@@ -2433,12 +2371,12 @@ ${schemes.map(function(scheme) {
2433
2371
  }
2434
2372
  }
2435
2373
  if (platform === "ios" && relativePath.endsWith(".xcodeproj/project.pbxproj") && app.alternateIcons !== void 0) {
2436
- var anchor13 = "ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;";
2437
- if (!rendered.includes(anchor13)) {
2374
+ var anchor10 = "ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;";
2375
+ if (!rendered.includes(anchor10)) {
2438
2376
  throw new Error("[vxrn] prebuild template lost its primary app icon build setting");
2439
2377
  }
2440
2378
  var names = Object.keys(app.alternateIcons).sort().join(" ");
2441
- rendered = rendered.replaceAll(anchor13, `${anchor13}
2379
+ rendered = rendered.replaceAll(anchor10, `${anchor10}
2442
2380
  ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = "${names}";`);
2443
2381
  }
2444
2382
  if (platform === "ios" && relativePath.endsWith("/Info.plist")) {
@@ -2473,16 +2411,16 @@ ${schemes.map(function(scheme) {
2473
2411
  }
2474
2412
  }
2475
2413
  if (additions.length) {
2476
- var anchor14 = " <key>LSRequiresIPhoneOS</key>";
2477
- if (!rendered.includes(anchor14)) {
2414
+ var anchor11 = " <key>LSRequiresIPhoneOS</key>";
2415
+ if (!rendered.includes(anchor11)) {
2478
2416
  throw new Error(`[vxrn] cannot stamp ${additions[0][0]}: expected LSRequiresIPhoneOS in Info.plist`);
2479
2417
  }
2480
- rendered = rendered.replace(anchor14, `${additions.map(function(param) {
2418
+ rendered = rendered.replace(anchor11, `${additions.map(function(param) {
2481
2419
  var [key, text] = param;
2482
2420
  return ` <key>${key}</key>
2483
2421
  <string>${escapeXml(text)}</string>
2484
2422
  `;
2485
- }).join("")}${anchor14}`);
2423
+ }).join("")}${anchor11}`);
2486
2424
  }
2487
2425
  rendered = rendered.replace(/\t<key>NS\w+UsageDescription<\/key>\s*<string><\/string>\n/g, "");
2488
2426
  }
@@ -2560,7 +2498,7 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2560
2498
  }
2561
2499
  }
2562
2500
  if (platform === "android" && relativePath === "app/build.gradle") {
2563
- var _app_android11;
2501
+ var _app_android10;
2564
2502
  rendered = nativeProjectPatches.replaceAppBuildGradleReactBlock(rendered);
2565
2503
  rendered = nativeProjectPatches.addDepsPatchToAppBuildGradle(rendered);
2566
2504
  if (!rendered.includes("entryFile = file(\"../../package.json\")") || !rendered.includes("[vxrn/one] ensure patches are applied")) {
@@ -2572,7 +2510,7 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2572
2510
  if (app.version !== void 0) {
2573
2511
  rendered = rendered.replace(/versionName "[^"]*"/g, `versionName "${app.version}"`);
2574
2512
  }
2575
- if (((_app_android11 = app.android) === null || _app_android11 === void 0 ? void 0 : _app_android11.versionCode) !== void 0) {
2513
+ if (((_app_android10 = app.android) === null || _app_android10 === void 0 ? void 0 : _app_android10.versionCode) !== void 0) {
2576
2514
  rendered = rendered.replace(/versionCode \d+/g, `versionCode ${app.android.versionCode}`);
2577
2515
  }
2578
2516
  }
@@ -2588,7 +2526,7 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2588
2526
  }
2589
2527
  rendered = rendered.replace(autolinkCommand, `ex.autolinkLibrariesFromCommand(["node", ["node", "--print", "require('module').createRequire(require.resolve('vxrn/package.json')).resolve('@react-native-community/cli/build/bin.js')"].execute(null, settingsDir).text.trim(), "config"])`);
2590
2528
  }
2591
- if (platform === "android" && relativePath === "app/build.gradle" && ((_app_android5 = app.android) === null || _app_android5 === void 0 ? void 0 : _app_android5.minify)) {
2529
+ if (platform === "android" && relativePath === "app/build.gradle" && ((_app_android3 = app.android) === null || _app_android3 === void 0 ? void 0 : _app_android3.minify)) {
2592
2530
  var minify = "def enableProguardInReleaseBuilds = false";
2593
2531
  var minifyEnabled = "minifyEnabled enableProguardInReleaseBuilds";
2594
2532
  if (!rendered.includes(minify) || !rendered.includes(minifyEnabled)) {
@@ -2600,7 +2538,7 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2600
2538
  shrinkResources true`);
2601
2539
  }
2602
2540
  }
2603
- if (platform === "android" && ((_app_android6 = app.android) === null || _app_android6 === void 0 ? void 0 : _app_android6.googleServicesFile)) {
2541
+ if (platform === "android" && ((_app_android4 = app.android) === null || _app_android4 === void 0 ? void 0 : _app_android4.googleServicesFile)) {
2604
2542
  var edits = [[
2605
2543
  "build.gradle",
2606
2544
  "classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")",
@@ -2613,11 +2551,11 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2613
2551
  var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;
2614
2552
  try {
2615
2553
  for (var _iterator3 = edits[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
2616
- var [file, anchor15, insertion] = _step3.value;
2554
+ var [file, anchor12, insertion] = _step3.value;
2617
2555
  if (relativePath !== file) continue;
2618
- var next = insertAfterLine(rendered, anchor15, insertion);
2556
+ var next = insertAfterLine(rendered, anchor12, insertion);
2619
2557
  if (next === rendered) {
2620
- throw new Error(`[vxrn] prebuild template ${file} lost its ${anchor15} anchor`);
2558
+ throw new Error(`[vxrn] prebuild template ${file} lost its ${anchor12} anchor`);
2621
2559
  }
2622
2560
  rendered = next;
2623
2561
  }
@@ -2636,7 +2574,7 @@ use_frameworks! :linkage => :${app.ios.useFrameworks}`);
2636
2574
  }
2637
2575
  }
2638
2576
  }
2639
- if (platform === "android" && relativePath === "app/proguard-rules.pro" && ((_app_android7 = app.android) === null || _app_android7 === void 0 ? void 0 : _app_android7.proguardRules)) {
2577
+ if (platform === "android" && relativePath === "app/proguard-rules.pro" && ((_app_android5 = app.android) === null || _app_android5 === void 0 ? void 0 : _app_android5.proguardRules)) {
2640
2578
  rendered = `${rendered.trimEnd()}
2641
2579
 
2642
2580
  ${app.android.proguardRules.trim()}
@@ -2648,8 +2586,8 @@ ${app.android.proguardRules.trim()}
2648
2586
  ["compileSdk", "compileSdkVersion"]
2649
2587
  ]; _i < _iter.length; _i++) {
2650
2588
  var [field, setting] = _iter[_i];
2651
- var _app_android12;
2652
- var value1 = platform === "android" ? (_app_android12 = app.android) === null || _app_android12 === void 0 ? void 0 : _app_android12[field] : void 0;
2589
+ var _app_android11;
2590
+ var value1 = platform === "android" ? (_app_android11 = app.android) === null || _app_android11 === void 0 ? void 0 : _app_android11[field] : void 0;
2653
2591
  if (value1 === void 0) continue;
2654
2592
  rendered = rendered.replace(new RegExp(`${setting} = \\d+`, "g"), `${setting} = ${value1}`);
2655
2593
  }