fastlane 2.128.1 → 2.129.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.
Files changed (52) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +74 -74
  3. data/deliver/lib/deliver/submit_for_review.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/appetize_viewing_url_generator.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/automatic_code_signing.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/commit_github_file.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/get_version_number.rb +18 -2
  8. data/fastlane/lib/fastlane/actions/github_api.rb +1 -1
  9. data/fastlane/lib/fastlane/actions/gradle.rb +26 -7
  10. data/fastlane/lib/fastlane/actions/import_from_git.rb +1 -1
  11. data/fastlane/lib/fastlane/actions/pod_push.rb +20 -10
  12. data/fastlane/lib/fastlane/actions/puts.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/sonar.rb +18 -0
  14. data/fastlane/lib/fastlane/actions/update_fastlane.rb +1 -1
  15. data/fastlane/lib/fastlane/commands_generator.rb +1 -1
  16. data/fastlane/lib/fastlane/helper/adb_helper.rb +5 -0
  17. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +11 -5
  18. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +4 -0
  19. data/fastlane/lib/fastlane/swift_fastlane_function.rb +11 -7
  20. data/fastlane/lib/fastlane/version.rb +1 -1
  21. data/fastlane/swift/Deliverfile.swift +1 -1
  22. data/fastlane/swift/Fastlane.swift +290 -284
  23. data/fastlane/swift/Gymfile.swift +1 -1
  24. data/fastlane/swift/GymfileProtocol.swift +3 -3
  25. data/fastlane/swift/Matchfile.swift +1 -1
  26. data/fastlane/swift/Precheckfile.swift +1 -1
  27. data/fastlane/swift/Scanfile.swift +1 -1
  28. data/fastlane/swift/ScanfileProtocol.swift +3 -3
  29. data/fastlane/swift/Screengrabfile.swift +1 -1
  30. data/fastlane/swift/Snapshotfile.swift +1 -1
  31. data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +1 -1
  32. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -1
  33. data/frameit/lib/frameit/editor.rb +1 -1
  34. data/gym/lib/gym/options.rb +1 -1
  35. data/match/lib/match/nuke.rb +1 -1
  36. data/match/lib/match/runner.rb +2 -2
  37. data/match/lib/match/storage/interface.rb +1 -1
  38. data/scan/lib/scan/options.rb +1 -1
  39. data/scan/lib/scan/runner.rb +1 -1
  40. data/snapshot/lib/assets/SnapshotHelper.swift +3 -3
  41. data/spaceship/lib/spaceship/connect_api/models/beta_tester_metric.rb +1 -0
  42. data/spaceship/lib/spaceship/du/du_client.rb +4 -0
  43. data/spaceship/lib/spaceship/portal/certificate.rb +15 -1
  44. data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
  45. data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
  46. data/spaceship/lib/spaceship/tunes/build_details.rb +160 -18
  47. data/spaceship/lib/spaceship/tunes/display_family.rb +3 -3
  48. data/spaceship/lib/spaceship/tunes/iap.rb +2 -0
  49. data/spaceship/lib/spaceship/tunes/iap_detail.rb +17 -0
  50. data/spaceship/lib/spaceship/tunes/tunes_client.rb +37 -1
  51. data/supply/lib/supply/client.rb +1 -1
  52. metadata +17 -18
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -28,7 +28,7 @@ protocol GymfileProtocol: class {
28
28
  var exportTeamId: String? { get }
29
29
  var xcargs: String? { get }
30
30
  var xcconfig: String? { get }
31
- var suppressXcodeOutput: String? { get }
31
+ var suppressXcodeOutput: Bool? { get }
32
32
  var disableXcpretty: String? { get }
33
33
  var xcprettyTestFormat: String? { get }
34
34
  var xcprettyFormatter: String? { get }
@@ -70,7 +70,7 @@ extension GymfileProtocol {
70
70
  var exportTeamId: String? { return nil }
71
71
  var xcargs: String? { return nil }
72
72
  var xcconfig: String? { return nil }
73
- var suppressXcodeOutput: String? { return nil }
73
+ var suppressXcodeOutput: Bool? { return nil }
74
74
  var disableXcpretty: String? { return nil }
75
75
  var xcprettyTestFormat: String? { return nil }
76
76
  var xcprettyFormatter: String? { return nil }
@@ -84,4 +84,4 @@ extension GymfileProtocol {
84
84
 
85
85
  // Please don't remove the lines below
86
86
  // They are used to detect outdated files
87
- // FastlaneRunnerAPIVersion [0.9.3]
87
+ // FastlaneRunnerAPIVersion [0.9.4]
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -25,7 +25,7 @@ protocol ScanfileProtocol: class {
25
25
  var outputFiles: String? { get }
26
26
  var buildlogPath: String { get }
27
27
  var includeSimulatorLogs: Bool { get }
28
- var suppressXcodeOutput: String? { get }
28
+ var suppressXcodeOutput: Bool? { get }
29
29
  var formatter: String? { get }
30
30
  var xcprettyArgs: String? { get }
31
31
  var derivedDataPath: String? { get }
@@ -82,7 +82,7 @@ extension ScanfileProtocol {
82
82
  var outputFiles: String? { return nil }
83
83
  var buildlogPath: String { return "~/Library/Logs/scan" }
84
84
  var includeSimulatorLogs: Bool { return false }
85
- var suppressXcodeOutput: String? { return nil }
85
+ var suppressXcodeOutput: Bool? { return nil }
86
86
  var formatter: String? { return nil }
87
87
  var xcprettyArgs: String? { return nil }
88
88
  var derivedDataPath: String? { return nil }
@@ -114,4 +114,4 @@ extension ScanfileProtocol {
114
114
 
115
115
  // Please don't remove the lines below
116
116
  // They are used to detect outdated files
117
- // FastlaneRunnerAPIVersion [0.9.11]
117
+ // FastlaneRunnerAPIVersion [0.9.12]
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.128.1
21
+ // Generated with fastlane 2.129.0
@@ -13,7 +13,7 @@ module FastlaneCore
13
13
  def new_event(action_stage)
14
14
  {
15
15
  client_id: @p_hash,
16
- category: "fastlane Client Langauge - #{@fastlane_client_language}",
16
+ category: "fastlane Client Language - #{@fastlane_client_language}",
17
17
  action: action_stage,
18
18
  label: action_name,
19
19
  value: nil
@@ -196,7 +196,7 @@ module FastlaneCore
196
196
  return
197
197
  end
198
198
 
199
- # We need to explicity test against Fastlane::Boolean, TrueClass/FalseClass
199
+ # We need to explicitly test against Fastlane::Boolean, TrueClass/FalseClass
200
200
  if value.class != FalseClass && value.class != TrueClass
201
201
  UI.user_error!("'#{self.key}' value must be either `true` or `false`! Found #{value.class} instead.")
202
202
  end
@@ -330,7 +330,7 @@ module Frameit
330
330
  background = put_title_into_background_stacked(background, title, keyword)
331
331
  return background
332
332
  end
333
- # sum_width: the width of both labels together including the space inbetween
333
+ # sum_width: the width of both labels together including the space in-between
334
334
  # is used to calculate the ratio
335
335
  sum_width = title.width
336
336
  sum_width += keyword.width + keyword_padding if keyword
@@ -210,7 +210,7 @@ module Gym
210
210
  env_name: "SUPPRESS_OUTPUT",
211
211
  description: "Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path",
212
212
  optional: true,
213
- is_string: false),
213
+ type: Boolean),
214
214
  FastlaneCore::ConfigItem.new(key: :disable_xcpretty,
215
215
  env_name: "DISABLE_XCPRETTY",
216
216
  description: "Disable xcpretty formatting of build output",
@@ -148,7 +148,7 @@ module Match
148
148
  rows = self.profiles.collect do |p|
149
149
  status = p.status == 'Active' ? p.status.green : p.status.red
150
150
 
151
- # Expires is somtimes nil
151
+ # Expires is sometimes nil
152
152
  expires = p.expires ? p.expires.strftime("%Y-%m-%d") : nil
153
153
  [p.name, p.id, status, p.type, expires]
154
154
  end
@@ -156,7 +156,7 @@ module Match
156
156
  UI.message("Installing certificate...")
157
157
 
158
158
  # Only looking for cert in "custom" (non login.keychain) keychain
159
- # Doing this for backwards compatability
159
+ # Doing this for backwards compatibility
160
160
  keychain_name = params[:keychain_name] == "login.keychain" ? nil : params[:keychain_name]
161
161
 
162
162
  if FastlaneCore::CertChecker.installed?(cert_path, in_keychain: keychain_name)
@@ -217,7 +217,7 @@ module Match
217
217
  end
218
218
  end
219
219
 
220
- if profile.nil? || params[:force]
220
+ if profile.nil? || force
221
221
  if params[:readonly]
222
222
  UI.error("No matching provisioning profiles found for '#{profile_name}'")
223
223
  UI.error("A new one cannot be created because you enabled `readonly`")
@@ -23,7 +23,7 @@ module Match
23
23
 
24
24
  # Call this method after creating a new object to configure
25
25
  # the given Storage object. This method will take
26
- # different paramters depending on specific class being used
26
+ # different parameters depending on specific class being used
27
27
  def configure
28
28
  not_implemented(__method__)
29
29
  end
@@ -213,7 +213,7 @@ module Scan
213
213
  env_name: "SCAN_SUPPRESS_XCODE_OUTPUT",
214
214
  description: "Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path",
215
215
  optional: true,
216
- is_string: false),
216
+ type: Boolean),
217
217
  FastlaneCore::ConfigItem.new(key: :formatter,
218
218
  short_option: "-n",
219
219
  env_name: "SCAN_FORMATTER",
@@ -136,7 +136,7 @@ module Scan
136
136
  # Zips build products and moves it to output directory
137
137
  UI.message("Zipping build products")
138
138
  FastlaneCore::Helper.zip_directory(path, output_path, contents_only: true, overwrite: true, print: false)
139
- UI.message("Succesfully zipped build products: #{output_path}")
139
+ UI.message("Successfully zipped build products: #{output_path}")
140
140
  end
141
141
 
142
142
  def test_results
@@ -175,11 +175,11 @@ open class Snapshot: NSObject {
175
175
 
176
176
  let screenshot = XCUIScreen.main.screenshot()
177
177
  guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return }
178
-
178
+
179
179
  do {
180
180
  // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices
181
181
  let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ")
182
- let range = NSMakeRange(0, simulator.count)
182
+ let range = NSRange(location: 0, length: simulator.count)
183
183
  simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "")
184
184
 
185
185
  let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png")
@@ -300,4 +300,4 @@ private extension CGFloat {
300
300
 
301
301
  // Please don't remove the lines below
302
302
  // They are used to detect outdated configuration files
303
- // SnapshotHelperVersion [1.20]
303
+ // SnapshotHelperVersion [1.21]
@@ -24,6 +24,7 @@ module Spaceship
24
24
 
25
25
  module BetaTesterState
26
26
  INSTALLED = "INSTALLED"
27
+ INVITED = "INVITED"
27
28
  NO_BUILDS = "NO_BUILDS"
28
29
  end
29
30
 
@@ -22,6 +22,10 @@ module Spaceship
22
22
  upload_file(app_version: app_version, upload_file: upload_file, path: '/upload/image', content_provider_id: content_provider_id, sso_token: sso_token_for_image, du_validation_rule_set: screenshot_picture_type(device, is_messages))
23
23
  end
24
24
 
25
+ def upload_purchase_merch_screenshot(app_id, upload_file, content_provider_id, sso_token_for_image)
26
+ upload_file(app_id: app_id, upload_file: upload_file, path: '/upload/image', content_provider_id: content_provider_id, sso_token: sso_token_for_image, du_validation_rule_set: 'MZPFT.MerchandisingIAPIcon')
27
+ end
28
+
25
29
  def upload_purchase_review_screenshot(app_id, upload_file, content_provider_id, sso_token_for_image)
26
30
  upload_file(app_id: app_id, upload_file: upload_file, path: '/upload/image', content_provider_id: content_provider_id, sso_token: sso_token_for_image, du_validation_rule_set: get_picture_type(upload_file))
27
31
  end
@@ -89,6 +89,12 @@ module Spaceship
89
89
  # Certs are not associated with apps
90
90
  #####################################################
91
91
 
92
+ # An Apple development code signing certificate used for development environment
93
+ class AppleDevelopment < Certificate; end
94
+
95
+ # An Apple distribution code signing certificate used for distribution environment
96
+ class AppleDistribution < Certificate; end
97
+
92
98
  # A development code signing certificate used for development environment
93
99
  class Development < Certificate; end
94
100
 
@@ -152,6 +158,11 @@ module Spaceship
152
158
  # A Mac push notification certificate for production environment
153
159
  class MacProductionPush < PushCertificate; end
154
160
 
161
+ APPLE_CERTIFICATE_TYPE_IDS = {
162
+ "83Q87W3TGH" => AppleDevelopment,
163
+ "WXV89964HE" => AppleDistribution
164
+ }
165
+
155
166
  IOS_CERTIFICATE_TYPE_IDS = {
156
167
  "5QPB9NHCEI" => Development,
157
168
  "R58UK2EWSO" => Production,
@@ -187,7 +198,9 @@ module Spaceship
187
198
  "DIVN2GW3XT" => DeveloperIdApplication
188
199
  }
189
200
 
190
- CERTIFICATE_TYPE_IDS = IOS_CERTIFICATE_TYPE_IDS.merge(MAC_CERTIFICATE_TYPE_IDS)
201
+ CERTIFICATE_TYPE_IDS = APPLE_CERTIFICATE_TYPE_IDS
202
+ .merge(IOS_CERTIFICATE_TYPE_IDS)
203
+ .merge(MAC_CERTIFICATE_TYPE_IDS)
191
204
 
192
205
  # Class methods
193
206
  class << self
@@ -259,6 +272,7 @@ module Spaceship
259
272
  def all(mac: false)
260
273
  if self == Certificate # are we the base-class?
261
274
  type_ids = mac ? MAC_CERTIFICATE_TYPE_IDS : IOS_CERTIFICATE_TYPE_IDS
275
+ type_ids = APPLE_CERTIFICATE_TYPE_IDS.merge(type_ids)
262
276
  types = type_ids.keys
263
277
  types += OLDER_IOS_CERTIFICATE_TYPES unless mac
264
278
  else
@@ -25,7 +25,7 @@ module Spaceship
25
25
  puts("Please try unsetting the FASTLANE_SESSION environment variable".yellow)
26
26
  puts("(if it is set) and re-run `fastlane spaceauth`".yellow)
27
27
  puts("")
28
- puts("Execption type: #{ex.class}")
28
+ puts("Exception type: #{ex.class}")
29
29
  raise ex
30
30
  end
31
31
 
@@ -93,7 +93,7 @@ module Spaceship
93
93
  end
94
94
 
95
95
  # @return (Spaceship::TestFlight::Tester) Returns the testers matching the parameter.
96
- # ITC searchs all fields, and is full text. The search results are the union of all words in the search text
96
+ # ITC searches all fields, and is full text. The search results are the union of all words in the search text
97
97
  # @param text (String) (required): Value used to filter the tester, case insensitive
98
98
  def self.search(app_id: nil, text: nil, is_email_exact_match: false)
99
99
  text = text.strip
@@ -6,36 +6,178 @@ module Spaceship
6
6
  class BuildDetails < TunesBase
7
7
  # @return (String) The App identifier of this app, provided by App Store Connect
8
8
  # @example
9
- # "1013943394"
9
+ # '1013943394'
10
10
  attr_accessor :apple_id
11
11
 
12
- # @return (String) Link to the dSYM file (not always available)
13
- # lol, it's unencrypted http
14
- attr_accessor :dsym_url
12
+ # @return (Integer) Upload date of build as UNIX timestamp
13
+ # @example 1563813377000
14
+ attr_accessor :upload_date
15
15
 
16
- # @return [Bool]
17
- attr_accessor :include_symbols
16
+ # @return (String) State of the build/binary
17
+ # @example 'ITC.apps.preReleaseBuildStatus.Validated'
18
+ attr_accessor :binary_state
18
19
 
19
- # @return [Integer]
20
- attr_accessor :number_of_asset_packs
20
+ # @return (String) Name of uploaded file
21
+ # @example 'MyApp.ipa'
22
+ attr_accessor :file_name
23
+
24
+ # @return (String) SDK used to build app
25
+ # @example '13A340'
26
+ attr_accessor :build_sdk
27
+
28
+ # @return (String) Platform
29
+ # @example '13A340'
30
+ attr_accessor :build_platform
31
+
32
+ # @return (String) Bundle ID of build
33
+ # @example 'com.sample.app'
34
+ attr_accessor :bundle_id
35
+
36
+ # @return (String) Name of app
37
+ # @example 'Test App'
38
+ attr_accessor :app_name
39
+
40
+ # @return (String) Supported architectures of the build
41
+ # @example 'armv7, arm64'
42
+ attr_accessor :supported_architectures
43
+
44
+ # @return (String) Localizations of the build
45
+ # @example 'English'
46
+ attr_accessor :localizations
47
+
48
+ # @return (Boolean) Is this a Newsstand app?
49
+ # @example false
50
+ attr_accessor :newsstand_app
51
+
52
+ # @return (Boolean) Does the build contain an app icon?
53
+ # @example true
54
+ attr_accessor :prerendered_icon_flag
55
+
56
+ # @return [Hash] containing all entitlements for all targets
57
+ # @example 'Sample.app/Sample: {'com.apple.developer.team-identifier': 'ABC123DEF456'}'
58
+ attr_accessor :entitlements
59
+
60
+ # @return (String) Platform of the app
61
+ # @example 'ios'
62
+ attr_accessor :app_plattform
63
+
64
+ # @return (String) Device Requirements / Device Protocols
65
+ attr_accessor :device_protocols
66
+
67
+ # @return (String) Version code of the build
68
+ # @example '4'
69
+ attr_accessor :cf_bundle_version
70
+
71
+ # @return (String) Version code of the build train
72
+ # @example '1.6'
73
+ attr_accessor :cf_bundle_short_version
74
+
75
+ # @return (String) Minimum iOS Version
76
+ # @example '9.3'
77
+ attr_accessor :min_os_version
78
+
79
+ # @return (String) Enabled Device Family
80
+ # @example 'iPhone / iPod touch, iPad''
81
+ attr_accessor :device_families
82
+
83
+ # @return (String) Required Capabilities
84
+ # @example 'armv7'
85
+ attr_accessor :capabilities
86
+
87
+ # @return (Int) Compressed File Size in bytes
88
+ # @example '9365224'
89
+ attr_accessor :size_in_bytes
90
+
91
+ # @return (Hash) Estimated App Store file sizes for all devices in bytes
92
+ attr_accessor :sizes_in_bytes
21
93
 
22
- # @return [Bool]
94
+ # @return (Hash) Estimated App Store file sizes for all devices in bytes
95
+ attr_accessor :sizes_in_bytes_with_device_loc
96
+
97
+ # @return (Boolean) Contains On Demand Resources
98
+ # @example false
23
99
  attr_accessor :contains_odr
24
100
 
25
- # e.g. "13A340"
26
- attr_accessor :build_sdk
101
+ # @return (Integer) Number of Asset packs
102
+ # @example 0
103
+ attr_accessor :number_of_asset_packs
27
104
 
28
- # @return [String] e.g. "MyApp.ipa"
29
- attr_accessor :file_name
105
+ # @return (Boolean) Includes Symbols
106
+ # @example true
107
+ attr_accessor :include_symbols
108
+
109
+ # @return (Boolean) App Uses Non-Exempt Encryption (Optional)
110
+ # @example null
111
+ attr_accessor :use_encryption_in_plist
112
+
113
+ # @return (Boolean) App Encryption Export Compliance Code (Optional)
114
+ # @example null
115
+ attr_accessor :export_compliance_code_value_in_plist
116
+
117
+ # @return (Boolean) Includes Stickers
118
+ # @example false
119
+ attr_accessor :has_stickers
120
+
121
+ # @return (Boolean) Includes iMessage App
122
+ # @example false
123
+ attr_accessor :has_messages_extension
124
+
125
+ # @return (Boolean) // Not sure what this is for
126
+ # @example false
127
+ attr_accessor :launch_prohibited
128
+
129
+ # @return (Boolean) Uses SiriKit
130
+ # @example false
131
+ attr_accessor :uses_synapse
132
+
133
+ # @return (Boolean) App uses Location Services
134
+ # @example false
135
+ attr_accessor :uses_location_background_mode
136
+
137
+ # @return (String) Link to the dSYM file (not always available)
138
+ # @example build/***.****.*****.*****-1.0.0-2647.dSYM.zip
139
+ attr_accessor :dsym_url
140
+
141
+ # @return (Boolean) Watch-Only App
142
+ # @example false
143
+ attr_accessor :watch_only
30
144
 
31
145
  attr_mapping(
32
146
  'apple_id' => :apple_id,
33
- 'dsymurl' => :dsym_url,
34
- 'includesSymbols' => :include_symbols,
35
- 'numberOfAssetPacks' => :number_of_asset_packs,
36
- 'containsODR' => :contains_odr,
147
+ 'uploadDate' => :upload_date,
148
+ 'binaryState' => :binary_state,
149
+ 'fileName' => :file_name,
37
150
  'buildSdk' => :build_sdk,
38
- 'fileName' => :file_name
151
+ 'buildPlatform' => :build_platform,
152
+ 'bundleId' => :bundle_id,
153
+ 'appName' => :app_name,
154
+ 'supportedArchitectures' => :supported_architectures,
155
+ 'localizations' => :localizations,
156
+ 'newsstandApp' => :newsstand_app,
157
+ 'prerenderedIconFlag' => :prerendered_icon_flag,
158
+ 'entitlements' => :entitlements,
159
+ 'appPlatform' => :app_platform,
160
+ 'deviceProtocols' => :device_protocols,
161
+ 'cfBundleVersion' => :cf_bundle_version,
162
+ 'cfBundleShortVersion' => :cf_bundle_short_version,
163
+ 'minOsVersion' => :min_os_version,
164
+ 'deviceFamilies' => :device_families,
165
+ 'capabilities' => :capabilities,
166
+ 'sizeInBytes' => :size_in_bytes,
167
+ 'sizesInBytes' => :sizes_in_bytes,
168
+ 'sizesInBytesWithDeviceLoc' => :sizes_in_bytes_with_device_loc,
169
+ 'containsODR' => :contains_odr,
170
+ 'numberOfAssetPacks' => :number_of_asset_packs,
171
+ 'includesSymbols' => :include_symbols,
172
+ 'useEncryptionInPlist' => :use_encryption_in_plist,
173
+ 'exportComplianceCodeValueInPlist' => :export_compliance_code_value_in_plist,
174
+ 'hasStickers' => :has_stickers,
175
+ 'hasMessagesExtension' => :has_messages_extension,
176
+ 'launchProhibited' => :launch_prohibited,
177
+ 'usesSynapse' => :uses_synapse,
178
+ 'usesLocationBackgroundMode' => :uses_location_background_mode,
179
+ 'dsymurl' => :dsym_url,
180
+ 'watchOnly' => :watch_only
39
181
  )
40
182
  end
41
183
  end