fastlane 2.133.0 → 2.136.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +78 -78
  3. data/fastlane/lib/fastlane/action.rb +1 -1
  4. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  6. data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
  7. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +38 -4
  9. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  10. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +4 -2
  11. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +26 -2
  12. data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -3
  13. data/fastlane/lib/fastlane/actions/download_from_play_store.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/get_version_number.rb +10 -4
  15. data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
  16. data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
  17. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
  19. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
  20. data/fastlane/lib/fastlane/environment_printer.rb +9 -3
  21. data/fastlane/lib/fastlane/fast_file.rb +3 -2
  22. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  23. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +12 -2
  24. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
  25. data/fastlane/lib/fastlane/runner.rb +2 -2
  26. data/fastlane/lib/fastlane/swift_fastlane_function.rb +9 -0
  27. data/fastlane/lib/fastlane/version.rb +1 -1
  28. data/fastlane/swift/Deliverfile.swift +1 -1
  29. data/fastlane/swift/Fastlane.swift +124 -36
  30. data/fastlane/swift/Gymfile.swift +1 -1
  31. data/fastlane/swift/Matchfile.swift +1 -1
  32. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  33. data/fastlane/swift/Precheckfile.swift +1 -1
  34. data/fastlane/swift/Scanfile.swift +1 -1
  35. data/fastlane/swift/Screengrabfile.swift +1 -1
  36. data/fastlane/swift/ScreengrabfileProtocol.swift +22 -2
  37. data/fastlane/swift/Snapshotfile.swift +1 -1
  38. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +3 -3
  39. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  40. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  41. data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
  42. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  43. data/match/lib/match/importer.rb +1 -1
  44. data/scan/lib/scan/error_handler.rb +9 -4
  45. data/scan/lib/scan/runner.rb +1 -1
  46. data/screengrab/lib/screengrab/module.rb +2 -0
  47. data/screengrab/lib/screengrab/options.rb +33 -11
  48. data/screengrab/lib/screengrab/runner.rb +64 -24
  49. data/sigh/lib/assets/resign.sh +2 -2
  50. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
  51. data/spaceship/lib/spaceship/client.rb +2 -2
  52. data/supply/lib/supply.rb +23 -0
  53. data/supply/lib/supply/.uploader.rb.swp +0 -0
  54. data/supply/lib/supply/client.rb +101 -55
  55. data/supply/lib/supply/options.rb +50 -14
  56. data/supply/lib/supply/release_listing.rb +18 -0
  57. data/supply/lib/supply/setup.rb +42 -34
  58. data/supply/lib/supply/uploader.rb +191 -93
  59. metadata +32 -37
  60. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  61. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  62. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  63. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  64. data/gym/lib/gym/.runner.rb.swp +0 -0
  65. data/pilot/lib/pilot/.manager.rb.swp +0 -0
  66. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
  67. data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f60586154ca46a8972940838fd1c842c4ea3d15710660ae67f6a1daa6e549725
4
- data.tar.gz: 796c700b97db4495e2f108eec428ccb03dd6b2112fa8df8dcca3650165a00484
3
+ metadata.gz: b8c1652cb1f5fa0d2fbd567e4d4721fc85be17dae9506afcf4fe8c9bd80c3ec6
4
+ data.tar.gz: d257b400a19b96ccb7a0803af98f71cc6af521b8745a27e4a5083e547a7387bd
5
5
  SHA512:
6
- metadata.gz: 73fb7ed813d160104e2481a6923797d673dc12109f60ad1c24b743a2dd0477460e70e614da2701c386ae5d0912a1964f4dee49a4db8c32a8a0a9ddba0a45cb29
7
- data.tar.gz: e909f2a16fea9377e4fbf21466e38d64b5428b539db2751a1c28a83d3e6ae45aa27bce88960756c2d9056830c66660ccc3445317eeaa55156c58e699afd31e4d
6
+ metadata.gz: a83e00a94cac8a0ac90f1273f70c1676dc1ddee5190599b84c1b2759b09d6f79054cbf13e9b1c3c1c7c928ccb941ec322a35ff9f479c7324db1ff9c71f541917
7
+ data.tar.gz: 1a70fc80b4d8bfddec51d92044dbc36d806629ae03e8d3b55be3832d5694ecb06391f1c2e6df47477c439c61522a4849317fac988f360e7407bd206caac96bfb
data/README.md CHANGED
@@ -34,55 +34,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='olivier-halligon'>
38
- <a href='https://github.com/AliSoftware'>
39
- <img src='https://github.com/AliSoftware.png?size=140'>
37
+ <td id='felix-krause'>
38
+ <a href='https://github.com/KrauseFx'>
39
+ <img src='https://github.com/KrauseFx.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
42
42
  </td>
43
- <td id='helmut-januschka'>
44
- <a href='https://github.com/hjanuschka'>
45
- <img src='https://github.com/hjanuschka.png?size=140'>
43
+ <td id='matthew-ellis'>
44
+ <a href='https://github.com/matthewellis'>
45
+ <img src='https://github.com/matthewellis.png?size=140'>
46
46
  </a>
47
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
48
48
  </td>
49
- <td id='jérôme-lacoste'>
50
- <a href='https://github.com/lacostej'>
51
- <img src='https://github.com/lacostej.png?size=140'>
49
+ <td id='luka-mirosevic'>
50
+ <a href='https://github.com/lmirosevic'>
51
+ <img src='https://github.com/lmirosevic.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
54
54
  </td>
55
- <td id='josh-holtz'>
56
- <a href='https://github.com/joshdholtz'>
57
- <img src='https://github.com/joshdholtz.png?size=140'>
55
+ <td id='aaron-brager'>
56
+ <a href='https://github.com/getaaron'>
57
+ <img src='https://github.com/getaaron.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
60
60
  </td>
61
- <td id='matthew-ellis'>
62
- <a href='https://github.com/matthewellis'>
63
- <img src='https://github.com/matthewellis.png?size=140'>
61
+ <td id='fumiya-nakamura'>
62
+ <a href='https://github.com/nafu'>
63
+ <img src='https://github.com/nafu.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
+ <td id='manu-wallner'>
70
+ <a href='https://github.com/milch'>
71
+ <img src='https://github.com/milch.png?size=140'>
72
+ </a>
73
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
74
+ </td>
75
+ <td id='helmut-januschka'>
76
+ <a href='https://github.com/hjanuschka'>
77
+ <img src='https://github.com/hjanuschka.png?size=140'>
78
+ </a>
79
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
80
+ </td>
81
+ <td id='kohki-miki'>
82
+ <a href='https://github.com/giginet'>
83
+ <img src='https://github.com/giginet.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
86
+ </td>
69
87
  <td id='maksym-grebenets'>
70
88
  <a href='https://github.com/mgrebenets'>
71
89
  <img src='https://github.com/mgrebenets.png?size=140'>
72
90
  </a>
73
91
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
74
92
  </td>
75
- <td id='jimmy-dee'>
76
- <a href='https://github.com/jdee'>
77
- <img src='https://github.com/jdee.png?size=140'>
93
+ <td id='stefan-natchev'>
94
+ <a href='https://github.com/snatchev'>
95
+ <img src='https://github.com/snatchev.png?size=140'>
78
96
  </a>
79
- <h4 align='center'>Jimmy Dee</h4>
97
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
80
98
  </td>
81
- <td id='danielle-tomlinson'>
82
- <a href='https://github.com/endocrimes'>
83
- <img src='https://github.com/endocrimes.png?size=140'>
99
+ </tr>
100
+ <tr>
101
+ <td id='iulian-onofrei'>
102
+ <a href='https://github.com/revolter'>
103
+ <img src='https://github.com/revolter.png?size=140'>
84
104
  </a>
85
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
86
106
  </td>
87
107
  <td id='andrew-mcburney'>
88
108
  <a href='https://github.com/armcburney'>
@@ -90,75 +110,55 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
90
110
  </a>
91
111
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
92
112
  </td>
93
- <td id='luka-mirosevic'>
94
- <a href='https://github.com/lmirosevic'>
95
- <img src='https://github.com/lmirosevic.png?size=140'>
113
+ <td id='olivier-halligon'>
114
+ <a href='https://github.com/AliSoftware'>
115
+ <img src='https://github.com/AliSoftware.png?size=140'>
96
116
  </a>
97
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
98
118
  </td>
99
- </tr>
100
- <tr>
101
- <td id='joshua-liebowitz'>
102
- <a href='https://github.com/taquitos'>
103
- <img src='https://github.com/taquitos.png?size=140'>
119
+ <td id='jorge-revuelta-h'>
120
+ <a href='https://github.com/minuscorp'>
121
+ <img src='https://github.com/minuscorp.png?size=140'>
104
122
  </a>
105
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
106
124
  </td>
107
- <td id='stefan-natchev'>
108
- <a href='https://github.com/snatchev'>
109
- <img src='https://github.com/snatchev.png?size=140'>
125
+ <td id='josh-holtz'>
126
+ <a href='https://github.com/joshdholtz'>
127
+ <img src='https://github.com/joshdholtz.png?size=140'>
110
128
  </a>
111
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
112
130
  </td>
113
- <td id='kohki-miki'>
114
- <a href='https://github.com/giginet'>
115
- <img src='https://github.com/giginet.png?size=140'>
131
+ </tr>
132
+ <tr>
133
+ <td id='danielle-tomlinson'>
134
+ <a href='https://github.com/endocrimes'>
135
+ <img src='https://github.com/endocrimes.png?size=140'>
116
136
  </a>
117
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
118
138
  </td>
119
- <td id='manu-wallner'>
120
- <a href='https://github.com/milch'>
121
- <img src='https://github.com/milch.png?size=140'>
139
+ <td id='jérôme-lacoste'>
140
+ <a href='https://github.com/lacostej'>
141
+ <img src='https://github.com/lacostej.png?size=140'>
122
142
  </a>
123
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
124
144
  </td>
125
- <td id='fumiya-nakamura'>
126
- <a href='https://github.com/nafu'>
127
- <img src='https://github.com/nafu.png?size=140'>
145
+ <td id='joshua-liebowitz'>
146
+ <a href='https://github.com/taquitos'>
147
+ <img src='https://github.com/taquitos.png?size=140'>
128
148
  </a>
129
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
130
150
  </td>
131
- </tr>
132
- <tr>
133
151
  <td id='jan-piotrowski'>
134
152
  <a href='https://github.com/janpio'>
135
153
  <img src='https://github.com/janpio.png?size=140'>
136
154
  </a>
137
155
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
138
156
  </td>
139
- <td id='felix-krause'>
140
- <a href='https://github.com/KrauseFx'>
141
- <img src='https://github.com/KrauseFx.png?size=140'>
142
- </a>
143
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
144
- </td>
145
- <td id='jorge-revuelta-h'>
146
- <a href='https://github.com/minuscorp'>
147
- <img src='https://github.com/minuscorp.png?size=140'>
148
- </a>
149
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
150
- </td>
151
- <td id='aaron-brager'>
152
- <a href='https://github.com/getaaron'>
153
- <img src='https://github.com/getaaron.png?size=140'>
154
- </a>
155
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
156
- </td>
157
- <td id='iulian-onofrei'>
158
- <a href='https://github.com/revolter'>
159
- <img src='https://github.com/revolter.png?size=140'>
157
+ <td id='jimmy-dee'>
158
+ <a href='https://github.com/jdee'>
159
+ <img src='https://github.com/jdee.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
161
+ <h4 align='center'>Jimmy Dee</h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -134,7 +134,7 @@ module Fastlane
134
134
  UI.user_error!("To call another action from an action use `other_action.#{method_sym}` instead")
135
135
  end
136
136
 
137
- # When shelling out from the actoin, should we use `bundle exec`?
137
+ # When shelling out from the action, should we use `bundle exec`?
138
138
  def self.shell_out_should_use_bundle_exec?
139
139
  return File.exist?('Gemfile') && !Helper.contained_fastlane?
140
140
  end
@@ -77,7 +77,7 @@ module Fastlane
77
77
  # rubocop:enable Style/AccessorMethodName
78
78
 
79
79
  # Returns the class ref to the action based on the action name
80
- # Returns nil if the action is not aailable
80
+ # Returns nil if the action is not available
81
81
  def self.action_class_ref(action_name)
82
82
  class_name = action_name.to_s.fastlane_class + 'Action'
83
83
  class_ref = nil
@@ -21,6 +21,7 @@ module Fastlane
21
21
  cmd << "--use-ssh" if params[:use_ssh]
22
22
  cmd << "--use-submodules" if params[:use_submodules]
23
23
  cmd << "--no-use-binaries" if params[:use_binaries] == false
24
+ cmd << "--no-checkout" if params[:no_checkout] == true
24
25
  cmd << "--no-build" if params[:no_build] == true
25
26
  cmd << "--no-skip-current" if params[:no_skip_current] == true
26
27
  cmd << "--verbose" if params[:verbose] == true
@@ -94,6 +95,12 @@ module Fastlane
94
95
  is_string: false,
95
96
  type: Boolean,
96
97
  optional: true),
98
+ FastlaneCore::ConfigItem.new(key: :no_checkout,
99
+ env_name: "FL_CARTHAGE_NO_CHECKOUT",
100
+ description: "When bootstrapping Carthage do not checkout",
101
+ is_string: false,
102
+ type: Boolean,
103
+ optional: true),
97
104
  FastlaneCore::ConfigItem.new(key: :no_build,
98
105
  env_name: "FL_CARTHAGE_NO_BUILD",
99
106
  description: "When bootstrapping Carthage do not build",
@@ -14,15 +14,17 @@ module Fastlane
14
14
  cmd << ["cd '#{podfile_folder}' &&"]
15
15
  end
16
16
 
17
- cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
17
+ cmd << ['bundle exec'] if use_bundle_exec?(params)
18
18
  cmd << ['pod install']
19
19
 
20
20
  cmd << '--no-clean' unless params[:clean]
21
21
  cmd << '--no-integrate' unless params[:integrate]
22
+ cmd << '--clean-install' if params[:clean_install] && pod_version.to_f >= 1.7
22
23
  cmd << '--repo-update' if params[:repo_update]
23
24
  cmd << '--silent' if params[:silent]
24
25
  cmd << '--verbose' if params[:verbose]
25
26
  cmd << '--no-ansi' unless params[:ansi]
27
+ cmd << '--deployment' if params[:deployment]
26
28
 
27
29
  Actions.sh(cmd.join(' '), error_callback: lambda { |result|
28
30
  if !params[:repo_update] && params[:try_repo_update_on_error]
@@ -36,6 +38,14 @@ module Fastlane
36
38
  })
37
39
  end
38
40
 
41
+ def self.use_bundle_exec?(params)
42
+ params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
43
+ end
44
+
45
+ def self.pod_version
46
+ use_bundle_exec?(params) ? `bundle exec pod --version` : `pod --version`
47
+ end
48
+
39
49
  def self.call_error_callback(params, result)
40
50
  if params[:error_callback]
41
51
  Dir.chdir(FastlaneCore::FastlaneFolder.path) do
@@ -57,6 +67,11 @@ module Fastlane
57
67
  description: "Add `--repo-update` flag to `pod install` command",
58
68
  is_string: false,
59
69
  default_value: false),
70
+ FastlaneCore::ConfigItem.new(key: :clean_install,
71
+ env_name: "FL_COCOAPODS_CLEAN_INSTALL",
72
+ description: "Execute a full pod installation ignoring the content of the project cache",
73
+ is_string: false,
74
+ default_value: false),
60
75
  FastlaneCore::ConfigItem.new(key: :silent,
61
76
  env_name: "FL_COCOAPODS_SILENT",
62
77
  description: "Execute command without logging output",
@@ -98,11 +113,18 @@ module Fastlane
98
113
  is_string: false,
99
114
  default_value: false,
100
115
  type: Boolean),
116
+ FastlaneCore::ConfigItem.new(key: :deployment,
117
+ env_name: "FL_COCOAPODS_DEPLOYMENT",
118
+ description: 'Disallow any changes to the Podfile or the Podfile.lock during installation',
119
+ optional: true,
120
+ is_string: false,
121
+ default_value: false,
122
+ type: Boolean),
101
123
 
102
124
  # Deprecated
103
125
  FastlaneCore::ConfigItem.new(key: :clean,
104
126
  env_name: "FL_COCOAPODS_CLEAN",
105
- description: "(Option removed from cocoapods) Remove SCM directories",
127
+ description: "(Option renamed as clean_install) Remove SCM directories",
106
128
  deprecated: true,
107
129
  is_string: false,
108
130
  default_value: true),
@@ -33,7 +33,7 @@ module Fastlane
33
33
  options[:disable_notify] = 'yes' if options[:disable_notify]
34
34
 
35
35
  connection.post("/api/users/#{user_name}/apps", options)
36
- rescue Faraday::Error::TimeoutError
36
+ rescue Faraday::TimeoutError
37
37
  UI.crash!("Timed out while uploading build. Check https://deploygate.com/ to see if the upload was completed.")
38
38
  end
39
39
 
@@ -26,11 +26,13 @@ sudo gem install fastlane
26
26
 
27
27
  ##### Gradle dependency
28
28
  ```java
29
- androidTestCompile('tools.fastlane:screengrab:x.x.x')
29
+ androidTestImplementation 'tools.fastlane:screengrab:x.x.x'
30
30
  ```
31
31
 
32
32
  The latest version is [ ![Download](https://api.bintray.com/packages/fastlane/fastlane/screengrab/images/download.svg) ](https://bintray.com/fastlane/fastlane/screengrab/_latestVersion)
33
33
 
34
+ As of Screengrab version 2.0.0, all Android test dependencies are AndroidX dependencies. This means a device with API 18+, Android 4.3 or greater is required. If you wish to capture screenshots with an older Android OS, then you must use a 1.x.x version.
35
+
34
36
  ##### Configuring your Manifest Permissions
35
37
 
36
38
  Ensure that the following permissions exist in your **src/debug/AndroidManifest.xml**
@@ -82,10 +84,10 @@ As of _screengrab_ 0.5.0, you can specify different strategies to control the wa
82
84
  * Multi-window situations are correctly captured (dialogs, etc.)
83
85
  * Works on Android N
84
86
 
85
- However, UI Automator requires a device with **API level >= 18**, so it is not yet the default strategy. To enable it for all screenshots by default, make the following call before your tests run:
87
+ UI Automator is the default strategy. However, UI Automator requires a device with **API level >= 18**. If you need to grab screenshots on an older Android version, use the latest 1.x.x version of this library and set the DecorView ScreenshotStrategy.
86
88
 
87
89
  ```java
88
- Screengrab.setDefaultScreenshotStrategy(new UiAutomatorScreenshotStrategy());
90
+ Screengrab.setDefaultScreenshotStrategy(new DecorViewScreenshotStrategy());
89
91
  ```
90
92
 
91
93
  ## Improved screenshot capture with Falcon
@@ -169,7 +171,39 @@ If you're having trouble getting your device unlocked and the screen activated t
169
171
 
170
172
  ## Clean Status Bar
171
173
 
172
- You can use [QuickDemo](https://github.com/PSPDFKit-labs/QuickDemo) to clean up the status bar for your screenshots.
174
+ Screengrab can clean your status bar to make your screenshots even more beautiful.
175
+ Note: the clean status bar feature is only supported on devices with *API level >= 23*.
176
+
177
+ To use the clean status bar feature add the following lines to your src/debug/AndroidManifest.xml
178
+ ```xml
179
+ <!-- Indicates the use of the clean status bar feature -->
180
+ <uses-feature android:name="tools.fastlane.screengrab.cleanstatusbar"/>
181
+ <!-- Allows for changing the status bar -->
182
+ <uses-permission android:name="android.permission.DUMP"/>
183
+ ```
184
+
185
+ After that you can enable and disable the clean status bar at any moment during your tests.
186
+ In most cases you probably want to do this in the @BeforeClass and @AfterClass methods.
187
+ ```java
188
+ @BeforeClass
189
+ public static void beforeAll() {
190
+ CleanStatusBar.enableWithDefaults();
191
+ }
192
+
193
+ @AfterClass
194
+ public static void afterAll() {
195
+ CleanStatusBar.disable();
196
+ }
197
+ ```
198
+
199
+ Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
200
+ You could for example show the Bluetooth icon and the LTE text.
201
+ ```java
202
+ new CleanStatusBar()
203
+ .setBluetoothState(BluetoothState.DISCONNECTED)
204
+ .setMobileNetworkDataType(MobileDataType.LTE)
205
+ .enable();
206
+ ```
173
207
 
174
208
  # Advanced _screengrab_
175
209
 
@@ -128,7 +128,7 @@ Your screenshots will be stored in the `./screenshots/` folder by default (or `.
128
128
 
129
129
  New with Xcode 9, *snapshot* can run multiple simulators concurrently. This is the default behavior in order to take your screenshots as quickly as possible. This can be disabled to run each device, one at a time, by setting the `:concurrent_simulators` option to `false`.
130
130
 
131
- **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you wont see the simulators running your tests, they will, in fact, be taking your screenshots.
131
+ **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you won't see the simulators running your tests, they will, in fact, be taking your screenshots.
132
132
 
133
133
  If any error occurs while running the snapshot script on a device, that device will not have any screenshots, and _snapshot_ will continue with the next device or language. To stop the flow after the first error, run
134
134
 
@@ -99,7 +99,7 @@ If your machine is currently using SSH to authenticate with GitHub, you'll want
99
99
  Using parameter:
100
100
 
101
101
  ```
102
- math(git_basic_authorization: '<YOUR KEY>')
102
+ match(git_basic_authorization: '<YOUR KEY>')
103
103
  ```
104
104
 
105
105
  Using environment variable:
@@ -236,9 +236,11 @@ There are two cases for reading and writing certificates stored in a Google Clou
236
236
  When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the authentication credentials needed to access your Google Cloud storage bucket. Make sure to keep that file secret and never add it to version control. We recommend adding `gc_keys.json` to your `.gitignore`
237
237
 
238
238
  ##### Managing developer access via keys
239
+
239
240
  If you want to manage developer access to your certificates via authentication keys, every developer should create their own `gc_keys.json` and add the file to all their work machines. This will give the admin full control over who has read/write access to the given Storage bucket. At the same time it allows your team to revoke a single key if a file gets compromised.
240
241
 
241
- ##### Managing developer acess via Google accounts
242
+ ##### Managing developer access via Google accounts
243
+
242
244
  If your developers already have Google accounts and access to your Google Cloud project, you can also manage access to the storage bucket via [Cloud Identity and Access Management (IAM)](https://cloud.google.com/storage/docs/access-control/iam). Just [set up](https://cloud.google.com/storage/docs/access-control/lists) individual developer accounts or an entire Google Group containing your team as readers and writers on your storage bucket.
243
245
 
244
246
  You can then specify the Google Cloud project id containing your storage bucket in your `Matchfile`:
@@ -75,7 +75,7 @@ This will also upload app metadata if you previously ran `fastlane supply init`.
75
75
  To gradually roll out a new build use
76
76
 
77
77
  ```no-highlight
78
- fastlane supply --apk path/app.apk --track rollout --rollout 0.5
78
+ fastlane supply --apk path/app.apk --track beta --rollout 0.5
79
79
  ```
80
80
 
81
81
  ### Expansion files (`.obb`)
@@ -110,7 +110,7 @@ This will also upload app metadata if you previously ran `fastlane supply init`.
110
110
  To gradually roll out a new build use
111
111
 
112
112
  ```no-highlight
113
- fastlane supply --aab path/app.aab --track rollout --rollout 0.5
113
+ fastlane supply --aab path/app.aab --track beta --rollout 0.5
114
114
  ```
115
115
 
116
116
  ## Images and Screenshots
@@ -160,3 +160,27 @@ This can be done using the `--track_promote_to` parameter. The `--track_promote_
160
160
  ## Retrieve Track Version Codes
161
161
 
162
162
  Before performing a new APK upload you may want to check existing track version codes, or you may simply want to provide an informational lane that displays the currently promoted version codes for the production track. You can use the `google_play_track_version_codes` action to retrieve existing version codes for a package and track. For more information, see `fastlane action google_play_track_version_codes` help output.
163
+
164
+ ## Migration from AndroidPublisherV2 to AndroidPublisherV3 in _fastlane_ 2.135.0
165
+
166
+ ### New Options
167
+ - `:version_name`
168
+ - Used when uploading with `:apk_path`, `:apk_paths`, `:aab_path`, and `:aab_paths`
169
+ - Can be any string such (example: "October Release" or "Awesome New Feature")
170
+ - Defaults to the version name in app/build.gradle or AndroidManifest.xml
171
+ - `:release_status`
172
+ - Used when uploading with `:apk_path`, `:apk_paths`, `:aab_path`, and `:aab_paths`
173
+ - Can set as "draft" to complete the release at some other time
174
+ - Defaults to "completed"
175
+ - `:version_code`
176
+ - Used for `:update_rollout`, `:track_promote_to`, and uploading of meta data and screenshots
177
+ - `:skip_upload_changelogs`
178
+ - Changelogs were previously included with the `:skip_upload_metadata` but is now its own option
179
+
180
+ ### Deprecated Options
181
+ - `:check_superseded_tracks`
182
+ - Google Play will automatically remove releases that are superseded now
183
+ - `:deactivate_on_promote`
184
+ - Google Play will automatically deactive a release from its previous track on promote
185
+
186
+ :