fastlane 2.128.1 → 2.129.0

Sign up to get free protection for your applications and to get access to all the features.
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