fastlane 2.133.0 → 2.136.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +78 -78
- data/fastlane/lib/fastlane/action.rb +1 -1
- data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
- data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
- data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +38 -4
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +4 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +26 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -3
- data/fastlane/lib/fastlane/actions/download_from_play_store.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +10 -4
- data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
- data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
- data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
- data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
- data/fastlane/lib/fastlane/environment_printer.rb +9 -3
- data/fastlane/lib/fastlane/fast_file.rb +3 -2
- data/fastlane/lib/fastlane/lane_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +12 -2
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
- data/fastlane/lib/fastlane/runner.rb +2 -2
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +9 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +124 -36
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +2 -2
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +22 -2
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +3 -3
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
- data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/match/lib/match/importer.rb +1 -1
- data/scan/lib/scan/error_handler.rb +9 -4
- data/scan/lib/scan/runner.rb +1 -1
- data/screengrab/lib/screengrab/module.rb +2 -0
- data/screengrab/lib/screengrab/options.rb +33 -11
- data/screengrab/lib/screengrab/runner.rb +64 -24
- data/sigh/lib/assets/resign.sh +2 -2
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +2 -2
- data/supply/lib/supply.rb +23 -0
- data/supply/lib/supply/.uploader.rb.swp +0 -0
- data/supply/lib/supply/client.rb +101 -55
- data/supply/lib/supply/options.rb +50 -14
- data/supply/lib/supply/release_listing.rb +18 -0
- data/supply/lib/supply/setup.rb +42 -34
- data/supply/lib/supply/uploader.rb +191 -93
- metadata +32 -37
- data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/gym/lib/gym/.runner.rb.swp +0 -0
- data/pilot/lib/pilot/.manager.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
- data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
@@ -252,13 +252,13 @@ module Fastlane
|
|
252
252
|
puts(class_ref.deprecated_notes.to_s.remove_markdown.deprecated) if class_ref.deprecated_notes
|
253
253
|
puts("==========================================\n".deprecated)
|
254
254
|
end
|
255
|
-
class_ref.runner = self # needed to call another action
|
255
|
+
class_ref.runner = self # needed to call another action from an action
|
256
256
|
return class_ref.run(arguments)
|
257
257
|
end
|
258
258
|
end
|
259
259
|
rescue Interrupt => e
|
260
260
|
raise e # reraise the interruption to avoid logging this as a crash
|
261
|
-
rescue FastlaneCore::Interface::FastlaneCommonException => e # these are exceptions that we
|
261
|
+
rescue FastlaneCore::Interface::FastlaneCommonException => e # these are exceptions that we don't count as crashes
|
262
262
|
raise e
|
263
263
|
rescue FastlaneCore::Interface::FastlaneError => e # user_error!
|
264
264
|
action_completed(method_sym.to_s, status: FastlaneCore::ActionCompletionStatus::USER_ERROR, exception: e)
|
@@ -147,6 +147,7 @@ module Fastlane
|
|
147
147
|
unless default_value.nil?
|
148
148
|
if type == "[String : Any]"
|
149
149
|
# we can't handle default values for Hashes, yet
|
150
|
+
# see method swift_default_implementations for similar behavior
|
150
151
|
default_value = "[:]"
|
151
152
|
elsif type != "Bool" && type != "[String]" && type != "Int" && type != "((String) -> Void)"
|
152
153
|
default_value = "\"#{default_value}\""
|
@@ -343,6 +344,10 @@ module Fastlane
|
|
343
344
|
unless default_value.nil?
|
344
345
|
if type == "Bool" || type == "[String]" || type == "Int" || default_value.kind_of?(Array)
|
345
346
|
default_value = default_value.to_s
|
347
|
+
elsif default_value.kind_of?(Hash)
|
348
|
+
# we can't handle default values for Hashes, yet
|
349
|
+
# see method parameters for similar behavior
|
350
|
+
default_value = "[:]"
|
346
351
|
else
|
347
352
|
default_value = "\"#{default_value}\""
|
348
353
|
end
|
@@ -366,6 +371,10 @@ module Fastlane
|
|
366
371
|
default_value ||= "[]"
|
367
372
|
end
|
368
373
|
|
374
|
+
if type == "[String : Any]"
|
375
|
+
default_value ||= "[:]"
|
376
|
+
end
|
377
|
+
|
369
378
|
" var #{var_for_parameter_name}: #{type} { return #{default_value} }"
|
370
379
|
end
|
371
380
|
|
@@ -1210,12 +1210,17 @@ func bundleInstall(binstubs: String? = nil,
|
|
1210
1210
|
- launchArguments: Additional launch arguments
|
1211
1211
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
1212
1212
|
- endingLocale: Return the device to this locale after running tests
|
1213
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
1213
1214
|
- appApkPath: The path to the APK for the app under test
|
1214
1215
|
- testsApkPath: The path to the APK for the the tests bundle
|
1215
1216
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
1216
1217
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
1217
1218
|
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
|
1218
1219
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1220
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
1221
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
1222
|
+
- cleanStatusBar: Enabling this option will clean the status bar
|
1223
|
+
- cleanStatusBarConfig: Specifies the configuration for the clean status bar
|
1219
1224
|
*/
|
1220
1225
|
func captureAndroidScreenshots(androidHome: String? = nil,
|
1221
1226
|
buildToolsVersion: String? = nil,
|
@@ -1228,14 +1233,19 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1228
1233
|
useTestsInPackages: [String]? = nil,
|
1229
1234
|
useTestsInClasses: [String]? = nil,
|
1230
1235
|
launchArguments: [String]? = nil,
|
1231
|
-
testInstrumentationRunner: String = "
|
1236
|
+
testInstrumentationRunner: String = "androidx.test.runner.AndroidJUnitRunner",
|
1232
1237
|
endingLocale: String = "en-US",
|
1238
|
+
useAdbRoot: Bool = false,
|
1233
1239
|
appApkPath: String? = nil,
|
1234
1240
|
testsApkPath: String? = nil,
|
1235
1241
|
specificDevice: String? = nil,
|
1236
1242
|
deviceType: String = "phone",
|
1237
1243
|
exitOnTestFailure: Bool = true,
|
1238
|
-
reinstallApp: Bool = false
|
1244
|
+
reinstallApp: Bool = false,
|
1245
|
+
useTimestampSuffix: Bool = true,
|
1246
|
+
adbHost: String? = nil,
|
1247
|
+
cleanStatusBar: Bool = false,
|
1248
|
+
cleanStatusBarConfig: [String : Any] = [:]) {
|
1239
1249
|
let command = RubyCommand(commandID: "", methodName: "capture_android_screenshots", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
1240
1250
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
1241
1251
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -1249,12 +1259,17 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1249
1259
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
1250
1260
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
1251
1261
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
1262
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
1252
1263
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
1253
1264
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
1254
1265
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
1255
1266
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
1256
1267
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
1257
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
1268
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
1269
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
1270
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost),
|
1271
|
+
RubyCommand.Argument(name: "clean_status_bar", value: cleanStatusBar),
|
1272
|
+
RubyCommand.Argument(name: "clean_status_bar_config", value: cleanStatusBarConfig)])
|
1258
1273
|
_ = runner.executeCommand(command)
|
1259
1274
|
}
|
1260
1275
|
|
@@ -1487,6 +1502,7 @@ func captureScreenshots(workspace: String? = nil,
|
|
1487
1502
|
- useSsh: Use SSH for downloading GitHub repositories
|
1488
1503
|
- useSubmodules: Add dependencies as Git submodules
|
1489
1504
|
- useBinaries: Check out dependency repositories even when prebuilt frameworks exist
|
1505
|
+
- noCheckout: When bootstrapping Carthage do not checkout
|
1490
1506
|
- noBuild: When bootstrapping Carthage do not build
|
1491
1507
|
- noSkipCurrent: Don't skip building the Carthage project (in addition to its dependencies)
|
1492
1508
|
- derivedData: Use derived data folder at path
|
@@ -1507,6 +1523,7 @@ func carthage(command: String = "bootstrap",
|
|
1507
1523
|
useSsh: Bool? = nil,
|
1508
1524
|
useSubmodules: Bool? = nil,
|
1509
1525
|
useBinaries: Bool? = nil,
|
1526
|
+
noCheckout: Bool? = nil,
|
1510
1527
|
noBuild: Bool? = nil,
|
1511
1528
|
noSkipCurrent: Bool? = nil,
|
1512
1529
|
derivedData: String? = nil,
|
@@ -1526,6 +1543,7 @@ func carthage(command: String = "bootstrap",
|
|
1526
1543
|
RubyCommand.Argument(name: "use_ssh", value: useSsh),
|
1527
1544
|
RubyCommand.Argument(name: "use_submodules", value: useSubmodules),
|
1528
1545
|
RubyCommand.Argument(name: "use_binaries", value: useBinaries),
|
1546
|
+
RubyCommand.Argument(name: "no_checkout", value: noCheckout),
|
1529
1547
|
RubyCommand.Argument(name: "no_build", value: noBuild),
|
1530
1548
|
RubyCommand.Argument(name: "no_skip_current", value: noSkipCurrent),
|
1531
1549
|
RubyCommand.Argument(name: "derived_data", value: derivedData),
|
@@ -1564,7 +1582,7 @@ func carthage(command: String = "bootstrap",
|
|
1564
1582
|
*/
|
1565
1583
|
func cert(development: Bool = false,
|
1566
1584
|
force: Bool = false,
|
1567
|
-
generateAppleCerts: Bool =
|
1585
|
+
generateAppleCerts: Bool = false,
|
1568
1586
|
username: String,
|
1569
1587
|
teamId: String? = nil,
|
1570
1588
|
teamName: String? = nil,
|
@@ -1799,6 +1817,7 @@ func clubmate() {
|
|
1799
1817
|
|
1800
1818
|
- parameters:
|
1801
1819
|
- repoUpdate: Add `--repo-update` flag to `pod install` command
|
1820
|
+
- cleanInstall: Execute a full pod installation ignoring the content of the project cache
|
1802
1821
|
- silent: Execute command without logging output
|
1803
1822
|
- verbose: Show more debugging information
|
1804
1823
|
- ansi: Show output with ANSI codes
|
@@ -1806,12 +1825,14 @@ func clubmate() {
|
|
1806
1825
|
- podfile: Explicitly specify the path to the Cocoapods' Podfile. You can either set it to the Podfile's path or to the folder containing the Podfile file
|
1807
1826
|
- errorCallback: A callback invoked with the command output if there is a non-zero exit status
|
1808
1827
|
- tryRepoUpdateOnError: Retry with --repo-update if action was finished with error
|
1809
|
-
-
|
1828
|
+
- deployment: Disallow any changes to the Podfile or the Podfile.lock during installation
|
1829
|
+
- clean: **DEPRECATED!** (Option renamed as clean_install) Remove SCM directories
|
1810
1830
|
- integrate: **DEPRECATED!** (Option removed from cocoapods) Integrate the Pods libraries into the Xcode project(s)
|
1811
1831
|
|
1812
1832
|
If you use [CocoaPods](http://cocoapods.org) you can use the `cocoapods` integration to run `pod install` before building your app.
|
1813
1833
|
*/
|
1814
1834
|
func cocoapods(repoUpdate: Bool = false,
|
1835
|
+
cleanInstall: Bool = false,
|
1815
1836
|
silent: Bool = false,
|
1816
1837
|
verbose: Bool = false,
|
1817
1838
|
ansi: Bool = true,
|
@@ -1819,9 +1840,11 @@ func cocoapods(repoUpdate: Bool = false,
|
|
1819
1840
|
podfile: String? = nil,
|
1820
1841
|
errorCallback: Any? = nil,
|
1821
1842
|
tryRepoUpdateOnError: Bool = false,
|
1843
|
+
deployment: Bool = false,
|
1822
1844
|
clean: Bool = true,
|
1823
1845
|
integrate: Bool = true) {
|
1824
1846
|
let command = RubyCommand(commandID: "", methodName: "cocoapods", className: nil, args: [RubyCommand.Argument(name: "repo_update", value: repoUpdate),
|
1847
|
+
RubyCommand.Argument(name: "clean_install", value: cleanInstall),
|
1825
1848
|
RubyCommand.Argument(name: "silent", value: silent),
|
1826
1849
|
RubyCommand.Argument(name: "verbose", value: verbose),
|
1827
1850
|
RubyCommand.Argument(name: "ansi", value: ansi),
|
@@ -1829,6 +1852,7 @@ func cocoapods(repoUpdate: Bool = false,
|
|
1829
1852
|
RubyCommand.Argument(name: "podfile", value: podfile),
|
1830
1853
|
RubyCommand.Argument(name: "error_callback", value: errorCallback),
|
1831
1854
|
RubyCommand.Argument(name: "try_repo_update_on_error", value: tryRepoUpdateOnError),
|
1855
|
+
RubyCommand.Argument(name: "deployment", value: deployment),
|
1832
1856
|
RubyCommand.Argument(name: "clean", value: clean),
|
1833
1857
|
RubyCommand.Argument(name: "integrate", value: integrate)])
|
1834
1858
|
_ = runner.executeCommand(command)
|
@@ -2496,11 +2520,12 @@ func download(url: String) {
|
|
2496
2520
|
- teamId: The ID of your App Store Connect team if you're in multiple teams
|
2497
2521
|
- teamName: The name of your App Store Connect team if you're in multiple teams
|
2498
2522
|
- platform: The app platform for dSYMs you wish to download (ios, appletvos)
|
2499
|
-
- version: The app version for dSYMs you wish to download, pass in 'latest' to download only the latest build's dSYMs
|
2523
|
+
- version: The app version for dSYMs you wish to download, pass in 'latest' to download only the latest build's dSYMs or 'live' to download only the live version dSYMs
|
2500
2524
|
- buildNumber: The app build_number for dSYMs you wish to download
|
2501
2525
|
- minVersion: The minimum app version for dSYMs you wish to download
|
2502
2526
|
- outputDirectory: Where to save the download dSYMs, defaults to the current path
|
2503
2527
|
- waitForDsymProcessing: Wait for dSYMs to process
|
2528
|
+
- waitTimeout: Number of seconds to wait for dSYMs to process
|
2504
2529
|
|
2505
2530
|
This action downloads dSYM files from App Store Connect after the ipa gets re-compiled by Apple. Useful if you have Bitcode enabled.|
|
2506
2531
|
|
|
@@ -2522,7 +2547,8 @@ func downloadDsyms(username: String,
|
|
2522
2547
|
buildNumber: String? = nil,
|
2523
2548
|
minVersion: String? = nil,
|
2524
2549
|
outputDirectory: String? = nil,
|
2525
|
-
waitForDsymProcessing: Bool = false
|
2550
|
+
waitForDsymProcessing: Bool = false,
|
2551
|
+
waitTimeout: Int = 300) {
|
2526
2552
|
let command = RubyCommand(commandID: "", methodName: "download_dsyms", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
|
2527
2553
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
2528
2554
|
RubyCommand.Argument(name: "team_id", value: teamId),
|
@@ -2532,7 +2558,8 @@ func downloadDsyms(username: String,
|
|
2532
2558
|
RubyCommand.Argument(name: "build_number", value: buildNumber),
|
2533
2559
|
RubyCommand.Argument(name: "min_version", value: minVersion),
|
2534
2560
|
RubyCommand.Argument(name: "output_directory", value: outputDirectory),
|
2535
|
-
RubyCommand.Argument(name: "wait_for_dsym_processing", value: waitForDsymProcessing)
|
2561
|
+
RubyCommand.Argument(name: "wait_for_dsym_processing", value: waitForDsymProcessing),
|
2562
|
+
RubyCommand.Argument(name: "wait_timeout", value: waitTimeout)])
|
2536
2563
|
_ = runner.executeCommand(command)
|
2537
2564
|
}
|
2538
2565
|
|
@@ -2541,6 +2568,8 @@ func downloadDsyms(username: String,
|
|
2541
2568
|
|
2542
2569
|
- parameters:
|
2543
2570
|
- packageName: The package name of the application to use
|
2571
|
+
- versionName: Version name (used when uploading new apks/aabs) - defaults to 'versionName' in build.gradle or AndroidManifest.xml
|
2572
|
+
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
2544
2573
|
- metadataPath: Path to the directory containing the metadata files
|
2545
2574
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
2546
2575
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
@@ -2552,7 +2581,9 @@ func downloadDsyms(username: String,
|
|
2552
2581
|
More information: https://docs.fastlane.tools/actions/download_from_play_store/
|
2553
2582
|
*/
|
2554
2583
|
func downloadFromPlayStore(packageName: String,
|
2555
|
-
|
2584
|
+
versionName: String? = nil,
|
2585
|
+
track: String = "production",
|
2586
|
+
metadataPath: String? = nil,
|
2556
2587
|
key: String? = nil,
|
2557
2588
|
issuer: String? = nil,
|
2558
2589
|
jsonKey: String? = nil,
|
@@ -2560,6 +2591,8 @@ func downloadFromPlayStore(packageName: String,
|
|
2560
2591
|
rootUrl: String? = nil,
|
2561
2592
|
timeout: Int = 300) {
|
2562
2593
|
let command = RubyCommand(commandID: "", methodName: "download_from_play_store", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
2594
|
+
RubyCommand.Argument(name: "version_name", value: versionName),
|
2595
|
+
RubyCommand.Argument(name: "track", value: track),
|
2563
2596
|
RubyCommand.Argument(name: "metadata_path", value: metadataPath),
|
2564
2597
|
RubyCommand.Argument(name: "key", value: key),
|
2565
2598
|
RubyCommand.Argument(name: "issuer", value: issuer),
|
@@ -2921,7 +2954,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
2921
2954
|
*/
|
2922
2955
|
func getCertificates(development: Bool = false,
|
2923
2956
|
force: Bool = false,
|
2924
|
-
generateAppleCerts: Bool =
|
2957
|
+
generateAppleCerts: Bool = false,
|
2925
2958
|
username: String,
|
2926
2959
|
teamId: String? = nil,
|
2927
2960
|
teamName: String? = nil,
|
@@ -3354,7 +3387,7 @@ func githubApi(serverUrl: String = "https://api.github.com",
|
|
3354
3387
|
|
3355
3388
|
- parameters:
|
3356
3389
|
- packageName: The package name of the application to use
|
3357
|
-
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
3390
|
+
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
3358
3391
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
3359
3392
|
- issuer: **DEPRECATED!** Use `--json_key` instead - The issuer of the p12 file (email address of the service account)
|
3360
3393
|
- jsonKey: The path to a file containing service account JSON, used to authenticate with Google
|
@@ -5773,12 +5806,17 @@ func scp(username: String,
|
|
5773
5806
|
- launchArguments: Additional launch arguments
|
5774
5807
|
- testInstrumentationRunner: The fully qualified class name of your test instrumentation runner
|
5775
5808
|
- endingLocale: Return the device to this locale after running tests
|
5809
|
+
- useAdbRoot: Restarts the adb daemon using `adb root` to allow access to screenshots directories on device. Use if getting 'Permission denied' errors
|
5776
5810
|
- appApkPath: The path to the APK for the app under test
|
5777
5811
|
- testsApkPath: The path to the APK for the the tests bundle
|
5778
5812
|
- specificDevice: Use the device or emulator with the given serial number or qualifier
|
5779
5813
|
- deviceType: Type of device used for screenshots. Matches Google Play Types (phone, sevenInch, tenInch, tv, wear)
|
5780
5814
|
- exitOnTestFailure: Whether or not to exit Screengrab on test failure. Exiting on failure will not copy sceenshots to local machine nor open sceenshots summary
|
5781
5815
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5816
|
+
- useTimestampSuffix: Add timestamp suffix to screenshot filename
|
5817
|
+
- adbHost: Configure the host used by adb to connect, allows running on remote devices farm
|
5818
|
+
- cleanStatusBar: Enabling this option will clean the status bar
|
5819
|
+
- cleanStatusBarConfig: Specifies the configuration for the clean status bar
|
5782
5820
|
*/
|
5783
5821
|
func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
5784
5822
|
buildToolsVersion: Any? = screengrabfile.buildToolsVersion,
|
@@ -5793,12 +5831,17 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5793
5831
|
launchArguments: [String]? = screengrabfile.launchArguments,
|
5794
5832
|
testInstrumentationRunner: Any = screengrabfile.testInstrumentationRunner,
|
5795
5833
|
endingLocale: Any = screengrabfile.endingLocale,
|
5834
|
+
useAdbRoot: Bool = screengrabfile.useAdbRoot,
|
5796
5835
|
appApkPath: Any? = screengrabfile.appApkPath,
|
5797
5836
|
testsApkPath: Any? = screengrabfile.testsApkPath,
|
5798
5837
|
specificDevice: Any? = screengrabfile.specificDevice,
|
5799
5838
|
deviceType: Any = screengrabfile.deviceType,
|
5800
5839
|
exitOnTestFailure: Bool = screengrabfile.exitOnTestFailure,
|
5801
|
-
reinstallApp: Bool = screengrabfile.reinstallApp
|
5840
|
+
reinstallApp: Bool = screengrabfile.reinstallApp,
|
5841
|
+
useTimestampSuffix: Bool = screengrabfile.useTimestampSuffix,
|
5842
|
+
adbHost: Any? = screengrabfile.adbHost,
|
5843
|
+
cleanStatusBar: Bool = screengrabfile.cleanStatusBar,
|
5844
|
+
cleanStatusBarConfig: [String : Any] = screengrabfile.cleanStatusBarConfig) {
|
5802
5845
|
let command = RubyCommand(commandID: "", methodName: "screengrab", className: nil, args: [RubyCommand.Argument(name: "android_home", value: androidHome),
|
5803
5846
|
RubyCommand.Argument(name: "build_tools_version", value: buildToolsVersion),
|
5804
5847
|
RubyCommand.Argument(name: "locales", value: locales),
|
@@ -5812,12 +5855,17 @@ func screengrab(androidHome: Any? = screengrabfile.androidHome,
|
|
5812
5855
|
RubyCommand.Argument(name: "launch_arguments", value: launchArguments),
|
5813
5856
|
RubyCommand.Argument(name: "test_instrumentation_runner", value: testInstrumentationRunner),
|
5814
5857
|
RubyCommand.Argument(name: "ending_locale", value: endingLocale),
|
5858
|
+
RubyCommand.Argument(name: "use_adb_root", value: useAdbRoot),
|
5815
5859
|
RubyCommand.Argument(name: "app_apk_path", value: appApkPath),
|
5816
5860
|
RubyCommand.Argument(name: "tests_apk_path", value: testsApkPath),
|
5817
5861
|
RubyCommand.Argument(name: "specific_device", value: specificDevice),
|
5818
5862
|
RubyCommand.Argument(name: "device_type", value: deviceType),
|
5819
5863
|
RubyCommand.Argument(name: "exit_on_test_failure", value: exitOnTestFailure),
|
5820
|
-
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp)
|
5864
|
+
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5865
|
+
RubyCommand.Argument(name: "use_timestamp_suffix", value: useTimestampSuffix),
|
5866
|
+
RubyCommand.Argument(name: "adb_host", value: adbHost),
|
5867
|
+
RubyCommand.Argument(name: "clean_status_bar", value: cleanStatusBar),
|
5868
|
+
RubyCommand.Argument(name: "clean_status_bar_config", value: cleanStatusBarConfig)])
|
5821
5869
|
_ = runner.executeCommand(command)
|
5822
5870
|
}
|
5823
5871
|
|
@@ -6476,6 +6524,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6476
6524
|
- sonarRunnerArgs: Pass additional arguments to sonar-scanner. Be sure to provide the arguments with a leading `-D` e.g. FL_SONAR_RUNNER_ARGS="-Dsonar.verbose=true"
|
6477
6525
|
- sonarLogin: Pass the Sonar Login token (e.g: xxxxxxprivate_token_XXXXbXX7e)
|
6478
6526
|
- sonarUrl: Pass the url of the Sonar server
|
6527
|
+
- sonarOrganization: Key of the organization on SonarCloud
|
6479
6528
|
- branchName: Pass the branch name which is getting scanned
|
6480
6529
|
- pullRequestBranch: The name of the branch that contains the changes to be merged
|
6481
6530
|
- pullRequestBase: The long-lived branch into which the PR will be merged
|
@@ -6496,6 +6545,7 @@ func sonar(projectConfigurationPath: String? = nil,
|
|
6496
6545
|
sonarRunnerArgs: String? = nil,
|
6497
6546
|
sonarLogin: String? = nil,
|
6498
6547
|
sonarUrl: String? = nil,
|
6548
|
+
sonarOrganization: String? = nil,
|
6499
6549
|
branchName: String? = nil,
|
6500
6550
|
pullRequestBranch: String? = nil,
|
6501
6551
|
pullRequestBase: String? = nil,
|
@@ -6510,6 +6560,7 @@ func sonar(projectConfigurationPath: String? = nil,
|
|
6510
6560
|
RubyCommand.Argument(name: "sonar_runner_args", value: sonarRunnerArgs),
|
6511
6561
|
RubyCommand.Argument(name: "sonar_login", value: sonarLogin),
|
6512
6562
|
RubyCommand.Argument(name: "sonar_url", value: sonarUrl),
|
6563
|
+
RubyCommand.Argument(name: "sonar_organization", value: sonarOrganization),
|
6513
6564
|
RubyCommand.Argument(name: "branch_name", value: branchName),
|
6514
6565
|
RubyCommand.Argument(name: "pull_request_branch", value: pullRequestBranch),
|
6515
6566
|
RubyCommand.Argument(name: "pull_request_base", value: pullRequestBase),
|
@@ -6639,7 +6690,10 @@ func ssh(username: String,
|
|
6639
6690
|
|
6640
6691
|
- parameters:
|
6641
6692
|
- packageName: The package name of the application to use
|
6642
|
-
-
|
6693
|
+
- versionName: Version name (used when uploading new apks/aabs) - defaults to 'versionName' in build.gradle or AndroidManifest.xml
|
6694
|
+
- versionCode: Version code (used when updating rollout or promoting specific versions)
|
6695
|
+
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
6696
|
+
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
6643
6697
|
- rollout: The percentage of the user fraction when uploading to the rollout track
|
6644
6698
|
- metadataPath: Path to the directory containing the metadata files
|
6645
6699
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
@@ -6652,17 +6706,18 @@ func ssh(username: String,
|
|
6652
6706
|
- aabPaths: An array of paths to AAB files to upload
|
6653
6707
|
- skipUploadApk: Whether to skip uploading APK
|
6654
6708
|
- skipUploadAab: Whether to skip uploading AAB
|
6655
|
-
- skipUploadMetadata: Whether to skip uploading metadata
|
6709
|
+
- skipUploadMetadata: Whether to skip uploading metadata, changelogs not included
|
6710
|
+
- skipUploadChangelogs: Whether to skip uploading changelogs
|
6656
6711
|
- skipUploadImages: Whether to skip uploading images, screenshots not included
|
6657
6712
|
- skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
|
6658
|
-
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
6713
|
+
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
6659
6714
|
- validateOnly: Only validate changes with Google Play rather than actually publish
|
6660
6715
|
- mapping: Path to the mapping file to upload
|
6661
6716
|
- mappingPaths: An array of paths to mapping files to upload
|
6662
6717
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
6663
|
-
- checkSupersededTracks: Check the other tracks for superseded versions and disable them
|
6718
|
+
- checkSupersededTracks: **DEPRECATED!** Google Play does this automatically now - Check the other tracks for superseded versions and disable them
|
6664
6719
|
- timeout: Timeout for read, open, and send (in seconds)
|
6665
|
-
- deactivateOnPromote: When promoting to a new track, deactivate the binary in the origin track
|
6720
|
+
- deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
|
6666
6721
|
- versionCodesToRetain: An array of version codes to retain when publishing a new APK
|
6667
6722
|
- obbMainReferencesVersion: References version of 'main' expansion file
|
6668
6723
|
- obbMainFileSize: Size of 'main' expansion file in bytes
|
@@ -6672,9 +6727,12 @@ func ssh(username: String,
|
|
6672
6727
|
More information: https://docs.fastlane.tools/actions/supply/
|
6673
6728
|
*/
|
6674
6729
|
func supply(packageName: String,
|
6730
|
+
versionName: String? = nil,
|
6731
|
+
versionCode: Int? = nil,
|
6732
|
+
releaseStatus: String = "completed",
|
6675
6733
|
track: String = "production",
|
6676
6734
|
rollout: String? = nil,
|
6677
|
-
metadataPath: String =
|
6735
|
+
metadataPath: String? = nil,
|
6678
6736
|
key: String? = nil,
|
6679
6737
|
issuer: String? = nil,
|
6680
6738
|
jsonKey: String? = nil,
|
@@ -6686,6 +6744,7 @@ func supply(packageName: String,
|
|
6686
6744
|
skipUploadApk: Bool = false,
|
6687
6745
|
skipUploadAab: Bool = false,
|
6688
6746
|
skipUploadMetadata: Bool = false,
|
6747
|
+
skipUploadChangelogs: Bool = false,
|
6689
6748
|
skipUploadImages: Bool = false,
|
6690
6749
|
skipUploadScreenshots: Bool = false,
|
6691
6750
|
trackPromoteTo: String? = nil,
|
@@ -6702,6 +6761,9 @@ func supply(packageName: String,
|
|
6702
6761
|
obbPatchReferencesVersion: String? = nil,
|
6703
6762
|
obbPatchFileSize: String? = nil) {
|
6704
6763
|
let command = RubyCommand(commandID: "", methodName: "supply", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
6764
|
+
RubyCommand.Argument(name: "version_name", value: versionName),
|
6765
|
+
RubyCommand.Argument(name: "version_code", value: versionCode),
|
6766
|
+
RubyCommand.Argument(name: "release_status", value: releaseStatus),
|
6705
6767
|
RubyCommand.Argument(name: "track", value: track),
|
6706
6768
|
RubyCommand.Argument(name: "rollout", value: rollout),
|
6707
6769
|
RubyCommand.Argument(name: "metadata_path", value: metadataPath),
|
@@ -6716,6 +6778,7 @@ func supply(packageName: String,
|
|
6716
6778
|
RubyCommand.Argument(name: "skip_upload_apk", value: skipUploadApk),
|
6717
6779
|
RubyCommand.Argument(name: "skip_upload_aab", value: skipUploadAab),
|
6718
6780
|
RubyCommand.Argument(name: "skip_upload_metadata", value: skipUploadMetadata),
|
6781
|
+
RubyCommand.Argument(name: "skip_upload_changelogs", value: skipUploadChangelogs),
|
6719
6782
|
RubyCommand.Argument(name: "skip_upload_images", value: skipUploadImages),
|
6720
6783
|
RubyCommand.Argument(name: "skip_upload_screenshots", value: skipUploadScreenshots),
|
6721
6784
|
RubyCommand.Argument(name: "track_promote_to", value: trackPromoteTo),
|
@@ -6816,7 +6879,7 @@ func swiftlint(mode: Any = "lint",
|
|
6816
6879
|
*/
|
6817
6880
|
func syncCodeSigning(type: String = "development",
|
6818
6881
|
readonly: Bool = false,
|
6819
|
-
generateAppleCerts: Bool =
|
6882
|
+
generateAppleCerts: Bool = false,
|
6820
6883
|
skipProvisioningProfiles: Bool = false,
|
6821
6884
|
appIdentifier: [String],
|
6822
6885
|
username: String,
|
@@ -7164,9 +7227,8 @@ func updateAppIdentifier(xcodeproj: String,
|
|
7164
7227
|
Makes sure fastlane-tools are up-to-date when running fastlane
|
7165
7228
|
|
7166
7229
|
- parameters:
|
7167
|
-
- nightly: Opt-in to install and use nightly fastlane builds
|
7168
7230
|
- noUpdate: Don't update during this run. This is used internally
|
7169
|
-
-
|
7231
|
+
- nightly: **DEPRECATED!** Nightly builds are no longer being made available - Opt-in to install and use nightly fastlane builds
|
7170
7232
|
|
7171
7233
|
This action will update fastlane to the most recent version - major version updates will not be performed automatically, as they might include breaking changes. If an update was performed, fastlane will be restarted before the run continues.
|
7172
7234
|
|
@@ -7183,12 +7245,10 @@ func updateAppIdentifier(xcodeproj: String,
|
|
7183
7245
|
|
7184
7246
|
Recommended usage of the `update_fastlane` action is at the top inside of the `before_all` block, before running any other action.
|
7185
7247
|
*/
|
7186
|
-
func updateFastlane(
|
7187
|
-
|
7188
|
-
|
7189
|
-
|
7190
|
-
RubyCommand.Argument(name: "no_update", value: noUpdate),
|
7191
|
-
RubyCommand.Argument(name: "tools", value: tools)])
|
7248
|
+
func updateFastlane(noUpdate: Bool = false,
|
7249
|
+
nightly: Bool = false) {
|
7250
|
+
let command = RubyCommand(commandID: "", methodName: "update_fastlane", className: nil, args: [RubyCommand.Argument(name: "no_update", value: noUpdate),
|
7251
|
+
RubyCommand.Argument(name: "nightly", value: nightly)])
|
7192
7252
|
_ = runner.executeCommand(command)
|
7193
7253
|
}
|
7194
7254
|
|
@@ -7236,6 +7296,22 @@ func updateInfoPlist(xcodeproj: String? = nil,
|
|
7236
7296
|
_ = runner.executeCommand(command)
|
7237
7297
|
}
|
7238
7298
|
|
7299
|
+
/**
|
7300
|
+
This action changes the keychain access groups in the entitlements file
|
7301
|
+
|
7302
|
+
- parameters:
|
7303
|
+
- entitlementsFile: The path to the entitlement file which contains the keychain access groups
|
7304
|
+
- identifiers: An Array of unique identifiers for the keychain access groups. Eg. ['your.keychain.access.groups.identifiers']
|
7305
|
+
|
7306
|
+
Updates the Keychain Group Access Groups in the given Entitlements file, so you can have keychain access groups for the app store build and keychain access groups for an enterprise build.
|
7307
|
+
*/
|
7308
|
+
func updateKeychainAccessGroups(entitlementsFile: String,
|
7309
|
+
identifiers: Any) {
|
7310
|
+
let command = RubyCommand(commandID: "", methodName: "update_keychain_access_groups", className: nil, args: [RubyCommand.Argument(name: "entitlements_file", value: entitlementsFile),
|
7311
|
+
RubyCommand.Argument(name: "identifiers", value: identifiers)])
|
7312
|
+
_ = runner.executeCommand(command)
|
7313
|
+
}
|
7314
|
+
|
7239
7315
|
/**
|
7240
7316
|
Update a plist file
|
7241
7317
|
|
@@ -7636,7 +7712,10 @@ func uploadToAppStore(username: String,
|
|
7636
7712
|
|
7637
7713
|
- parameters:
|
7638
7714
|
- packageName: The package name of the application to use
|
7639
|
-
-
|
7715
|
+
- versionName: Version name (used when uploading new apks/aabs) - defaults to 'versionName' in build.gradle or AndroidManifest.xml
|
7716
|
+
- versionCode: Version code (used when updating rollout or promoting specific versions)
|
7717
|
+
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
7718
|
+
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
7640
7719
|
- rollout: The percentage of the user fraction when uploading to the rollout track
|
7641
7720
|
- metadataPath: Path to the directory containing the metadata files
|
7642
7721
|
- key: **DEPRECATED!** Use `--json_key` instead - The p12 File used to authenticate with Google
|
@@ -7649,17 +7728,18 @@ func uploadToAppStore(username: String,
|
|
7649
7728
|
- aabPaths: An array of paths to AAB files to upload
|
7650
7729
|
- skipUploadApk: Whether to skip uploading APK
|
7651
7730
|
- skipUploadAab: Whether to skip uploading AAB
|
7652
|
-
- skipUploadMetadata: Whether to skip uploading metadata
|
7731
|
+
- skipUploadMetadata: Whether to skip uploading metadata, changelogs not included
|
7732
|
+
- skipUploadChangelogs: Whether to skip uploading changelogs
|
7653
7733
|
- skipUploadImages: Whether to skip uploading images, screenshots not included
|
7654
7734
|
- skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
|
7655
|
-
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
7735
|
+
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
7656
7736
|
- validateOnly: Only validate changes with Google Play rather than actually publish
|
7657
7737
|
- mapping: Path to the mapping file to upload
|
7658
7738
|
- mappingPaths: An array of paths to mapping files to upload
|
7659
7739
|
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
7660
|
-
- checkSupersededTracks: Check the other tracks for superseded versions and disable them
|
7740
|
+
- checkSupersededTracks: **DEPRECATED!** Google Play does this automatically now - Check the other tracks for superseded versions and disable them
|
7661
7741
|
- timeout: Timeout for read, open, and send (in seconds)
|
7662
|
-
- deactivateOnPromote: When promoting to a new track, deactivate the binary in the origin track
|
7742
|
+
- deactivateOnPromote: **DEPRECATED!** Google Play does this automatically now - When promoting to a new track, deactivate the binary in the origin track
|
7663
7743
|
- versionCodesToRetain: An array of version codes to retain when publishing a new APK
|
7664
7744
|
- obbMainReferencesVersion: References version of 'main' expansion file
|
7665
7745
|
- obbMainFileSize: Size of 'main' expansion file in bytes
|
@@ -7669,9 +7749,12 @@ func uploadToAppStore(username: String,
|
|
7669
7749
|
More information: https://docs.fastlane.tools/actions/supply/
|
7670
7750
|
*/
|
7671
7751
|
func uploadToPlayStore(packageName: String,
|
7752
|
+
versionName: String? = nil,
|
7753
|
+
versionCode: Int? = nil,
|
7754
|
+
releaseStatus: String = "completed",
|
7672
7755
|
track: String = "production",
|
7673
7756
|
rollout: String? = nil,
|
7674
|
-
metadataPath: String =
|
7757
|
+
metadataPath: String? = nil,
|
7675
7758
|
key: String? = nil,
|
7676
7759
|
issuer: String? = nil,
|
7677
7760
|
jsonKey: String? = nil,
|
@@ -7683,6 +7766,7 @@ func uploadToPlayStore(packageName: String,
|
|
7683
7766
|
skipUploadApk: Bool = false,
|
7684
7767
|
skipUploadAab: Bool = false,
|
7685
7768
|
skipUploadMetadata: Bool = false,
|
7769
|
+
skipUploadChangelogs: Bool = false,
|
7686
7770
|
skipUploadImages: Bool = false,
|
7687
7771
|
skipUploadScreenshots: Bool = false,
|
7688
7772
|
trackPromoteTo: String? = nil,
|
@@ -7699,6 +7783,9 @@ func uploadToPlayStore(packageName: String,
|
|
7699
7783
|
obbPatchReferencesVersion: String? = nil,
|
7700
7784
|
obbPatchFileSize: String? = nil) {
|
7701
7785
|
let command = RubyCommand(commandID: "", methodName: "upload_to_play_store", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
7786
|
+
RubyCommand.Argument(name: "version_name", value: versionName),
|
7787
|
+
RubyCommand.Argument(name: "version_code", value: versionCode),
|
7788
|
+
RubyCommand.Argument(name: "release_status", value: releaseStatus),
|
7702
7789
|
RubyCommand.Argument(name: "track", value: track),
|
7703
7790
|
RubyCommand.Argument(name: "rollout", value: rollout),
|
7704
7791
|
RubyCommand.Argument(name: "metadata_path", value: metadataPath),
|
@@ -7713,6 +7800,7 @@ func uploadToPlayStore(packageName: String,
|
|
7713
7800
|
RubyCommand.Argument(name: "skip_upload_apk", value: skipUploadApk),
|
7714
7801
|
RubyCommand.Argument(name: "skip_upload_aab", value: skipUploadAab),
|
7715
7802
|
RubyCommand.Argument(name: "skip_upload_metadata", value: skipUploadMetadata),
|
7803
|
+
RubyCommand.Argument(name: "skip_upload_changelogs", value: skipUploadChangelogs),
|
7716
7804
|
RubyCommand.Argument(name: "skip_upload_images", value: skipUploadImages),
|
7717
7805
|
RubyCommand.Argument(name: "skip_upload_screenshots", value: skipUploadScreenshots),
|
7718
7806
|
RubyCommand.Argument(name: "track_promote_to", value: trackPromoteTo),
|
@@ -8123,7 +8211,7 @@ func xcov(workspace: String? = nil,
|
|
8123
8211
|
coverallsServiceJobId: String? = nil,
|
8124
8212
|
coverallsRepoToken: String? = nil,
|
8125
8213
|
xcconfig: String? = nil,
|
8126
|
-
ideFoundationPath: String = "/Applications/Xcode-
|
8214
|
+
ideFoundationPath: String = "/Applications/Xcode-10.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8127
8215
|
legacySupport: Bool = false) {
|
8128
8216
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
8129
8217
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -8268,4 +8356,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8268
8356
|
|
8269
8357
|
// Please don't remove the lines below
|
8270
8358
|
// They are used to detect outdated files
|
8271
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8359
|
+
// FastlaneRunnerAPIVersion [0.9.64]
|