fastlane 2.186.0 → 2.187.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +86 -86
  3. data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -2
  4. data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -1
  5. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +25 -26
  6. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +2 -2
  7. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +171 -67
  8. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +3 -4
  9. data/fastlane/lib/fastlane/actions/lcov.rb +0 -4
  10. data/fastlane/lib/fastlane/actions/mailgun.rb +21 -27
  11. data/fastlane/lib/fastlane/actions/make_changelog_from_jenkins.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/modify_services.rb +59 -24
  13. data/fastlane/lib/fastlane/actions/nexus_upload.rb +2 -2
  14. data/fastlane/lib/fastlane/actions/notarize.rb +1 -4
  15. data/fastlane/lib/fastlane/actions/number_of_commits.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/oclint.rb +15 -14
  17. data/fastlane/lib/fastlane/actions/pod_push.rb +0 -2
  18. data/fastlane/lib/fastlane/actions/podio_item.rb +0 -7
  19. data/fastlane/lib/fastlane/actions/prompt.rb +3 -4
  20. data/fastlane/lib/fastlane/actions/push_git_tags.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/puts.rb +1 -2
  22. data/fastlane/lib/fastlane/actions/register_devices.rb +0 -1
  23. data/fastlane/lib/fastlane/actions/reset_git_repo.rb +5 -8
  24. data/fastlane/lib/fastlane/actions/reset_simulator_contents.rb +0 -2
  25. data/fastlane/lib/fastlane/actions/resign.rb +2 -9
  26. data/fastlane/lib/fastlane/actions/rsync.rb +3 -6
  27. data/fastlane/lib/fastlane/actions/run_tests.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/s3.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/say.rb +2 -3
  30. data/fastlane/lib/fastlane/actions/scp.rb +4 -10
  31. data/fastlane/lib/fastlane/actions/set_build_number_repository.rb +1 -1
  32. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  33. data/fastlane/lib/fastlane/actions/set_github_release.rb +2 -8
  34. data/fastlane/lib/fastlane/actions/set_info_plist_value.rb +1 -1
  35. data/fastlane/lib/fastlane/actions/set_pod_key.rb +3 -4
  36. data/fastlane/lib/fastlane/actions/setup_ci.rb +1 -2
  37. data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
  38. data/fastlane/lib/fastlane/actions/setup_jenkins.rb +7 -12
  39. data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
  40. data/fastlane/lib/fastlane/actions/sh.rb +2 -4
  41. data/fastlane/lib/fastlane/actions/slack.rb +6 -8
  42. data/fastlane/lib/fastlane/actions/slather.rb +3 -19
  43. data/fastlane/lib/fastlane/actions/sonar.rb +12 -19
  44. data/fastlane/lib/fastlane/actions/sourcedocs.rb +62 -98
  45. data/fastlane/lib/fastlane/actions/splunkmint.rb +2 -2
  46. data/fastlane/lib/fastlane/actions/spm.rb +3 -3
  47. data/fastlane/lib/fastlane/actions/ssh.rb +5 -10
  48. data/fastlane/lib/fastlane/actions/testfairy.rb +0 -1
  49. data/fastlane/lib/fastlane/actions/tryouts.rb +2 -3
  50. data/fastlane/lib/fastlane/actions/twitter.rb +0 -5
  51. data/fastlane/lib/fastlane/actions/unlock_keychain.rb +3 -3
  52. data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -4
  53. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +8 -15
  54. data/fastlane/lib/fastlane/actions/update_fastlane.rb +2 -2
  55. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  56. data/fastlane/lib/fastlane/version.rb +1 -1
  57. data/fastlane/swift/Deliverfile.swift +1 -1
  58. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  59. data/fastlane/swift/Fastlane.swift +57 -57
  60. data/fastlane/swift/Gymfile.swift +1 -1
  61. data/fastlane/swift/GymfileProtocol.swift +1 -1
  62. data/fastlane/swift/Matchfile.swift +1 -1
  63. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  64. data/fastlane/swift/Precheckfile.swift +1 -1
  65. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  66. data/fastlane/swift/Scanfile.swift +1 -1
  67. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  68. data/fastlane/swift/Screengrabfile.swift +1 -1
  69. data/fastlane/swift/ScreengrabfileProtocol.swift +4 -4
  70. data/fastlane/swift/Snapshotfile.swift +1 -1
  71. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  72. data/fastlane/swift/formatting/Brewfile.lock.json +11 -11
  73. data/produce/lib/produce/commands_generator.rb +99 -27
  74. data/produce/lib/produce/developer_center.rb +42 -4
  75. data/produce/lib/produce/options.rb +1 -1
  76. data/produce/lib/produce/service.rb +270 -179
  77. data/screengrab/lib/screengrab/android_environment.rb +2 -52
  78. data/screengrab/lib/screengrab/dependency_checker.rb +0 -20
  79. data/screengrab/lib/screengrab/options.rb +5 -2
  80. data/screengrab/lib/screengrab/runner.rb +108 -106
  81. data/snapshot/lib/assets/SnapfileTemplate +2 -1
  82. data/snapshot/lib/assets/SnapfileTemplate.swift +2 -1
  83. data/snapshot/lib/assets/SnapshotHelper.swift +14 -10
  84. data/snapshot/lib/snapshot/reports_generator.rb +3 -1
  85. data/snapshot/lib/snapshot/test_command_generator.rb +16 -2
  86. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +8 -0
  87. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +58 -17
  88. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -1
  89. metadata +20 -21
  90. data/fastlane/lib/fastlane/helper/.git_helper.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3c70ba96cf6bfbba6457919c4de99ec88f699a7ad08b98606aad1603053642e
4
- data.tar.gz: 946bfacb6403816694a2ad39f9eb5a897aa4b9fa66d35533f92a75f348bc662f
3
+ metadata.gz: d370ddf4cddc81061e1d5b91d5c00f7fc33a4c17e4fbfb756e7a66152e1299c9
4
+ data.tar.gz: c7f56aef41b36eb80a7326e9e805a13e6b012b30c9711d1f6b51139e649d7f22
5
5
  SHA512:
6
- metadata.gz: 9d136b32351413335f6a50af66177c99ba7ac579465b1c4603c5a4536733803c7bc2de1081f01831b8d0ee04c79c93bcb0470c930e8d90521ca1ec60f755d951
7
- data.tar.gz: 14bff2661db8d370feec4a8f6fb089b7d4812bc768b678898cb22a52c95ffb5b77e5686b6c1ca1154f22fb7aa0b54c96a8864fb93b60bf184b9a185fdf61a2f2
6
+ metadata.gz: 6e399e4e24a24504a7535d2fc566d1334eb11d4f215db34f8bf385f29432c1add2b14a9003858e9fbcf5bc8b5751b7d81eec8d9bf0b116bde934a8a52ae3117e
7
+ data.tar.gz: 349ec0df013dcb650364be0cff77b86c38fe4bc31e811ebf5f878164ad0b4d8077be55c83578f4063d81ff99ebd9c8edb7061c0ceec23ae140d5c89805f3a848
data/README.md CHANGED
@@ -35,17 +35,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='danielle-tomlinson'>
39
- <a href='https://github.com/endocrimes'>
40
- <img src='https://github.com/endocrimes.png' width='140px;'>
38
+ <td id='fumiya-nakamura'>
39
+ <a href='https://github.com/nafu'>
40
+ <img src='https://github.com/nafu.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
43
43
  </td>
44
- <td id='matthew-ellis'>
45
- <a href='https://github.com/matthewellis'>
46
- <img src='https://github.com/matthewellis.png' width='140px;'>
44
+ <td id='joshua-liebowitz'>
45
+ <a href='https://github.com/taquitos'>
46
+ <img src='https://github.com/taquitos.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
49
49
  </td>
50
50
  <td id='jorge-revuelta-h'>
51
51
  <a href='https://github.com/minuscorp'>
@@ -53,69 +53,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
53
53
  </a>
54
54
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
55
55
  </td>
56
- <td id='satoshi-namai'>
57
- <a href='https://github.com/ainame'>
58
- <img src='https://github.com/ainame.png' width='140px;'>
59
- </a>
60
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
61
- </td>
62
- <td id='jan-piotrowski'>
63
- <a href='https://github.com/janpio'>
64
- <img src='https://github.com/janpio.png' width='140px;'>
65
- </a>
66
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
67
- </td>
68
- </tr>
69
- <tr>
70
56
  <td id='felix-krause'>
71
57
  <a href='https://github.com/KrauseFx'>
72
58
  <img src='https://github.com/KrauseFx.png' width='140px;'>
73
59
  </a>
74
60
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
75
61
  </td>
76
- <td id='max-ott'>
77
- <a href='https://github.com/max-ott'>
78
- <img src='https://github.com/max-ott.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
81
- </td>
82
- <td id='luka-mirosevic'>
83
- <a href='https://github.com/lmirosevic'>
84
- <img src='https://github.com/lmirosevic.png' width='140px;'>
62
+ <td id='andrew-mcburney'>
63
+ <a href='https://github.com/armcburney'>
64
+ <img src='https://github.com/armcburney.png' width='140px;'>
85
65
  </a>
86
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
87
67
  </td>
88
- <td id='daniel-jankowski'>
89
- <a href='https://github.com/mollyIV'>
90
- <img src='https://github.com/mollyIV.png' width='140px;'>
68
+ </tr>
69
+ <tr>
70
+ <td id='matthew-ellis'>
71
+ <a href='https://github.com/matthewellis'>
72
+ <img src='https://github.com/matthewellis.png' width='140px;'>
91
73
  </a>
92
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
93
75
  </td>
94
- <td id='jérôme-lacoste'>
95
- <a href='https://github.com/lacostej'>
96
- <img src='https://github.com/lacostej.png' width='140px;'>
76
+ <td id='maksym-grebenets'>
77
+ <a href='https://github.com/mgrebenets'>
78
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
97
79
  </a>
98
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
99
81
  </td>
100
- </tr>
101
- <tr>
102
82
  <td id='kohki-miki'>
103
83
  <a href='https://github.com/giginet'>
104
84
  <img src='https://github.com/giginet.png' width='140px;'>
105
85
  </a>
106
86
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
107
87
  </td>
108
- <td id='roger-oba'>
109
- <a href='https://github.com/rogerluan'>
110
- <img src='https://github.com/rogerluan.png' width='140px;'>
88
+ <td id='iulian-onofrei'>
89
+ <a href='https://github.com/revolter'>
90
+ <img src='https://github.com/revolter.png' width='140px;'>
111
91
  </a>
112
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
113
93
  </td>
114
- <td id='maksym-grebenets'>
115
- <a href='https://github.com/mgrebenets'>
116
- <img src='https://github.com/mgrebenets.png' width='140px;'>
94
+ <td id='manish-rathi'>
95
+ <a href='https://github.com/crazymanish'>
96
+ <img src='https://github.com/crazymanish.png' width='140px;'>
117
97
  </a>
118
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td id='satoshi-namai'>
103
+ <a href='https://github.com/ainame'>
104
+ <img src='https://github.com/ainame.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
119
107
  </td>
120
108
  <td id='manu-wallner'>
121
109
  <a href='https://github.com/milch'>
@@ -123,19 +111,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
123
111
  </a>
124
112
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
125
113
  </td>
126
- <td id='fumiya-nakamura'>
127
- <a href='https://github.com/nafu'>
128
- <img src='https://github.com/nafu.png' width='140px;'>
114
+ <td id='max-ott'>
115
+ <a href='https://github.com/max-ott'>
116
+ <img src='https://github.com/max-ott.png' width='140px;'>
129
117
  </a>
130
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
118
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
131
119
  </td>
132
- </tr>
133
- <tr>
134
- <td id='andrew-mcburney'>
135
- <a href='https://github.com/armcburney'>
136
- <img src='https://github.com/armcburney.png' width='140px;'>
120
+ <td id='josh-holtz'>
121
+ <a href='https://github.com/joshdholtz'>
122
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
137
123
  </a>
138
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
139
125
  </td>
140
126
  <td id='jimmy-dee'>
141
127
  <a href='https://github.com/jdee'>
@@ -143,17 +129,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
143
129
  </a>
144
130
  <h4 align='center'>Jimmy Dee</h4>
145
131
  </td>
146
- <td id='joshua-liebowitz'>
147
- <a href='https://github.com/taquitos'>
148
- <img src='https://github.com/taquitos.png' width='140px;'>
132
+ </tr>
133
+ <tr>
134
+ <td id='helmut-januschka'>
135
+ <a href='https://github.com/hjanuschka'>
136
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
149
137
  </a>
150
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
151
139
  </td>
152
- <td id='manish-rathi'>
153
- <a href='https://github.com/crazymanish'>
154
- <img src='https://github.com/crazymanish.png' width='140px;'>
140
+ <td id='luka-mirosevic'>
141
+ <a href='https://github.com/lmirosevic'>
142
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
155
143
  </a>
156
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
145
+ </td>
146
+ <td id='roger-oba'>
147
+ <a href='https://github.com/rogerluan'>
148
+ <img src='https://github.com/rogerluan.png' width='140px;'>
149
+ </a>
150
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
157
151
  </td>
158
152
  <td id='olivier-halligon'>
159
153
  <a href='https://github.com/AliSoftware'>
@@ -161,37 +155,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
161
155
  </a>
162
156
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
163
157
  </td>
164
- </tr>
165
- <tr>
166
158
  <td id='stefan-natchev'>
167
159
  <a href='https://github.com/snatchev'>
168
160
  <img src='https://github.com/snatchev.png' width='140px;'>
169
161
  </a>
170
162
  <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
171
163
  </td>
172
- <td id='josh-holtz'>
173
- <a href='https://github.com/joshdholtz'>
174
- <img src='https://github.com/joshdholtz.png' width='140px;'>
164
+ </tr>
165
+ <tr>
166
+ <td id='aaron-brager'>
167
+ <a href='https://github.com/getaaron'>
168
+ <img src='https://github.com/getaaron.png' width='140px;'>
175
169
  </a>
176
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
177
171
  </td>
178
- <td id='helmut-januschka'>
179
- <a href='https://github.com/hjanuschka'>
180
- <img src='https://github.com/hjanuschka.png' width='140px;'>
172
+ <td id='jérôme-lacoste'>
173
+ <a href='https://github.com/lacostej'>
174
+ <img src='https://github.com/lacostej.png' width='140px;'>
181
175
  </a>
182
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
183
177
  </td>
184
- <td id='iulian-onofrei'>
185
- <a href='https://github.com/revolter'>
186
- <img src='https://github.com/revolter.png' width='140px;'>
178
+ <td id='jan-piotrowski'>
179
+ <a href='https://github.com/janpio'>
180
+ <img src='https://github.com/janpio.png' width='140px;'>
187
181
  </a>
188
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
189
183
  </td>
190
- <td id='aaron-brager'>
191
- <a href='https://github.com/getaaron'>
192
- <img src='https://github.com/getaaron.png' width='140px;'>
184
+ <td id='danielle-tomlinson'>
185
+ <a href='https://github.com/endocrimes'>
186
+ <img src='https://github.com/endocrimes.png' width='140px;'>
193
187
  </a>
194
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
189
+ </td>
190
+ <td id='daniel-jankowski'>
191
+ <a href='https://github.com/mollyIV'>
192
+ <img src='https://github.com/mollyIV.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  </table>
@@ -47,7 +47,10 @@ module Fastlane
47
47
  commands << Fastlane::Actions.sh("security unlock-keychain -p #{escaped_password} #{keychain_path}", log: false) if params[:unlock]
48
48
 
49
49
  command = "security set-keychain-settings"
50
- command << " -t #{params[:timeout]}" if params[:timeout]
50
+
51
+ # https://ss64.com/osx/security-keychain-settings.html
52
+ # omitting 'timeout' option to specify "no timeout" if required
53
+ command << " -t #{params[:timeout]}" if params[:timeout] > 0
51
54
  command << " -l" if params[:lock_when_sleeps]
52
55
  command << " -u" if params[:lock_after_timeout]
53
56
  command << " #{keychain_path}"
@@ -126,7 +129,7 @@ module Fastlane
126
129
  type: Boolean,
127
130
  default_value: false),
128
131
  FastlaneCore::ConfigItem.new(key: :timeout,
129
- description: 'timeout interval in seconds',
132
+ description: 'timeout interval in seconds. Set `0` if you want to specify "no time-out"',
130
133
  type: Integer,
131
134
  default_value: 300),
132
135
  FastlaneCore::ConfigItem.new(key: :lock_when_sleeps,
@@ -148,8 +148,8 @@ Optional: If _gym_ can't automatically detect the provisioning profiles to use,
148
148
  ```ruby
149
149
  build_app(
150
150
  scheme: "Release",
151
+ export_method: "app-store",
151
152
  export_options: {
152
- method: "app-store",
153
153
  provisioningProfiles: {
154
154
  "com.example.bundleid" => "Provisioning Profile Name",
155
155
  "com.example.bundleid2" => "Provisioning Profile Name 2"
@@ -38,21 +38,28 @@ As of Screengrab version 2.0.0, all Android test dependencies are AndroidX depen
38
38
  Ensure that the following permissions exist in your **src/debug/AndroidManifest.xml**
39
39
 
40
40
  ```xml
41
- <!-- Allows unlocking your device and activating its screen so UI tests can succeed -->
42
- <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
43
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
41
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
42
+ xmlns:tools="http://schemas.android.com/tools">
44
43
 
45
- <!-- Allows for storing and retrieving screenshots -->
46
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
47
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
44
+ <!-- Allows storing screenshots on external storage, where it can be accessed by ADB -->
45
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
48
46
 
49
- <!-- Allows changing locales -->
50
- <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
47
+ <!-- Allows changing locales -->
48
+ <uses-permission
49
+ android:name="android.permission.CHANGE_CONFIGURATION"
50
+ tools:ignore="ProtectedPermissions" />
51
+
52
+ <!-- Allows changing SystemUI demo mode -->
53
+ <uses-permission
54
+ android:name="android.permission.DUMP"
55
+ tools:ignore="ProtectedPermissions" />
56
+
57
+ </manifest>
51
58
  ```
52
59
 
53
60
  ##### Configuring your <a href="#ui-tests">UI Tests</a> for Screenshots
54
61
 
55
- 1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
62
+ 1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
56
63
  If you're using Java use:
57
64
  ```java
58
65
  @ClassRule
@@ -63,7 +70,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
63
70
  @Rule @JvmField
64
71
  val localeTestRule = LocaleTestRule()
65
72
  ```
66
- Important is the `@JvmField` annotation. It won't work like that:
73
+ The `@JvmField` annotation is important. It won't work like this:
67
74
  ```kotlin
68
75
  companion object {
69
76
  @get:ClassRule
@@ -79,7 +86,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
79
86
  - You can also create a lane and use `build_android_app`:
80
87
  ```ruby
81
88
  desc "Build debug and test APK for screenshots"
82
- lane :build_for_screengrab do
89
+ lane :build_and_screengrab do
83
90
  build_android_app(
84
91
  task: 'assemble',
85
92
  build_type: 'Debug'
@@ -88,6 +95,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
88
95
  task: 'assemble',
89
96
  build_type: 'AndroidTest'
90
97
  )
98
+ screengrab()
91
99
  end
92
100
  ```
93
101
  - Once complete run `fastlane screengrab` in your app project directory to generate screenshots
@@ -163,7 +171,7 @@ public class JUnit4StyleTests {
163
171
  public static final LocaleTestRule localeTestRule = new LocaleTestRule();
164
172
 
165
173
  @Rule
166
- public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
174
+ public ActivityScenarioRule<MainActivity> activityRule = new ActivityScenarioRule<>(MainActivity.class);
167
175
 
168
176
  @Test
169
177
  public void testTakeScreenshot() {
@@ -181,7 +189,7 @@ Kotlin:
181
189
  @RunWith(JUnit4.class)
182
190
  class JUnit4StyleTests {
183
191
  @get:Rule
184
- var activityRule = ActivityTestRule(MainActivity::class.java)
192
+ var activityRule = ActivityScenarioRule(MainActivity::class.java)
185
193
 
186
194
  @Rule @JvmField
187
195
  val localeTestRule = LocaleTestRule()
@@ -208,22 +216,13 @@ When using JUnit 3 you'll need to add a bit more code:
208
216
  - Use `LocaleUtil.changeDeviceLocaleTo(LocaleUtil.getEndingLocale());` in `tearDown()`
209
217
  - Use `Screengrab.screenshot("name_of_screenshot_here");` to capture screenshots at the appropriate points in your tests
210
218
 
211
- If you're having trouble getting your device unlocked and the screen activated to run tests, try using `ScreenUtil.activateScreenForTesting(activity);` in your test setup.
212
-
213
219
  ## Clean Status Bar
214
220
 
215
- Screengrab can clean your status bar to make your screenshots even more beautiful.
221
+ Screengrab can clean your status bar to make your screenshots even more beautiful.
222
+ It is simply a wrapper that allows configuring SystemUI DemoMode in your code.
216
223
  Note: the clean status bar feature is only supported on devices with *API level >= 23*.
217
224
 
218
- To use the clean status bar feature add the following lines to your src/debug/AndroidManifest.xml
219
- ```xml
220
- <!-- Indicates the use of the clean status bar feature -->
221
- <uses-feature android:name="tools.fastlane.screengrab.cleanstatusbar"/>
222
- <!-- Allows for changing the status bar -->
223
- <uses-permission android:name="android.permission.DUMP"/>
224
- ```
225
-
226
- After that you can enable and disable the clean status bar at any moment during your tests.
225
+ You can enable and disable the clean status bar at any moment during your tests.
227
226
  In most cases you probably want to do this in the @BeforeClass and @AfterClass methods.
228
227
  ```java
229
228
  @BeforeClass
@@ -237,7 +236,7 @@ public static void afterAll() {
237
236
  }
238
237
  ```
239
238
 
240
- Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
239
+ Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
241
240
  You could for example show the Bluetooth icon and the LTE text.
242
241
  ```java
243
242
  new CleanStatusBar()
@@ -2,7 +2,7 @@
2
2
  <img src="/img/actions/snapshot.png" width="250">
3
3
  </p>
4
4
 
5
- ###### Automate taking localized screenshots of your iOS and tvOS apps on every device
5
+ ###### Automate taking localized screenshots of your iOS, tvOS, and watchOS apps on every device
6
6
 
7
7
  <hr />
8
8
  <h4 align="center">
@@ -10,7 +10,7 @@
10
10
  </h4>
11
11
  <hr />
12
12
 
13
- _snapshot_ generates localized iOS and tvOS screenshots for different device types and languages for the App Store and can be uploaded using ([_deliver_](https://docs.fastlane.tools/actions/deliver/)).
13
+ _snapshot_ generates localized iOS, tvOS, and watchOS screenshots for different device types and languages for the App Store and can be uploaded using ([_deliver_](https://docs.fastlane.tools/actions/deliver/)).
14
14
 
15
15
  You have to manually create 20 (languages) x 6 (devices) x 5 (screenshots) = **600 screenshots**.
16
16
 
@@ -68,7 +68,7 @@ Options for create:
68
68
  -y, --sku STRING SKU Number (e.g. '1234') (PRODUCE_SKU)
69
69
  -j, --platform STRING The platform to use (optional) (PRODUCE_PLATFORM)
70
70
  -m, --language STRING Primary Language (e.g. 'English', 'German') (PRODUCE_LANGUAGE)
71
- -c, --company_name STRING The name of your company. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
71
+ -c, --company_name STRING The name of your company. It's used to set company name on App Store Connect team's app pages. Only required if it's the first app you create (PRODUCE_COMPANY_NAME)
72
72
  -i, --skip_itc [VALUE] Skip the creation of the app on App Store Connect (PRODUCE_SKIP_ITC)
73
73
  -d, --skip_devcenter [VALUE] Skip the creation of the app on the Apple Developer Portal (PRODUCE_SKIP_DEVCENTER)
74
74
  -s, --itc_users ARRAY Array of App Store Connect users. If provided, you can limit access to this newly created app for users with the App Manager, Developer, Marketer or Sales roles (ITC_USERS)
@@ -131,27 +131,62 @@ fastlane produce enable_services --help
131
131
  ```
132
132
 
133
133
  ```no-highlight
134
- --app-group Enable App Groups
135
- --apple-pay Enable Apple Pay
136
- --associated-domains Enable Associated Domains
137
- --data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
138
- --game-center Enable Game Center
139
- --healthkit Enable HealthKit
140
- --homekit Enable HomeKit
141
- --hotspot Enable Hotspot
142
- --icloud STRING Enable iCloud, suitable values are "legacy" and "cloudkit"
143
- --in-app-purchase Enable In-App Purchase
144
- --inter-app-audio Enable Inter-App-Audio
145
- --multipath Enable Multipath
146
- --network-extension Enable Network Extensions
147
- --nfc-tag-reading Enable NFC Tag Reading
148
- --personal-vpn Enable Personal VPN
149
- --passbook Enable Passbook (deprecated)
150
- --push-notification Enable Push notification (only enables the service, does not configure certificates)
151
- --sirikit Enable SiriKit
152
- --vpn-conf Enable VPN Configuration (deprecated)
153
- --wallet Enable Wallet
154
- --wireless-conf Enable Wireless Accessory Configuration
134
+ --access-wifi Enable Access Wifi
135
+ --app-attest Enable App Attest
136
+ --app-group Enable App Group
137
+ --apple-pay Enable Apple Pay
138
+ --associated-domains Enable Associated Domains
139
+ --auto-fill-credential Enable Auto Fill Credential
140
+ --class-kit Enable Class Kit
141
+ --icloud STRING Enable iCloud, suitable values are "xcode5_compatible" and "xcode6_compatible"
142
+ --custom-network-protocol Enable Custom Network Protocol
143
+ --data-protection STRING Enable Data Protection, suitable values are "complete", "unlessopen" and "untilfirstauth"
144
+ --extended-virtual-address-space Enable Extended Virtual Address Space
145
+ --game-center STRING Enable Game Center, suitable values are "ios" and "macos
146
+ --health-kit Enable Health Kit
147
+ --hls-interstitial-preview Enable Hls Interstitial Preview
148
+ --home-kit Enable Home Kit
149
+ --hotspot Enable Hotspot
150
+ --in-app-purchase Enable In App Purchase
151
+ --inter-app-audio Enable Inter App Audio
152
+ --low-latency-hls Enable Low Latency Hls
153
+ --managed-associated-domains Enable Managed Associated Domains
154
+ --maps Enable Maps
155
+ --multipath Enable Multipath
156
+ --network-extension Enable Network Extension
157
+ --nfc-tag-reading Enable NFC Tag Reading
158
+ --personal-vpn Enable Personal VPN
159
+ --passbook Enable Passbook (deprecated)
160
+ --push-notification Enable Push Notification
161
+ --sign-in-with-apple Enable Sign In With Apple
162
+ --siri-kit Enable Siri Kit
163
+ --system-extension Enable System Extension
164
+ --user-management Enable User Management
165
+ --vpn-configuration Enable Vpn Configuration (deprecated)
166
+ --wallet Enable Wallet
167
+ --wireless-accessory Enable Wireless Accessory
168
+ --car-play-audio-app Enable Car Play Audio App
169
+ --car-play-messaging-app Enable Car Play Messaging App
170
+ --car-play-navigation-app Enable Car Play Navigation App
171
+ --car-play-voip-calling-app Enable Car Play Voip Calling App
172
+ --critical-alerts Enable Critical Alerts
173
+ --hotspot-helper Enable Hotspot Helper
174
+ --driver-kit Enable DriverKit
175
+ --driver-kit-endpoint-security Enable DriverKit Endpoint Security
176
+ --driver-kit-family-hid-device Enable DriverKit Family HID Device
177
+ --driver-kit-family-networking Enable DriverKit Family Networking
178
+ --driver-kit-family-serial Enable DriverKit Family Serial
179
+ --driver-kit-hid-event-service Enable DriverKit HID EventService
180
+ --driver-kit-transport-hid Enable DriverKit Transport HID
181
+ --multitasking-camera-access Enable Multitasking Camera Access
182
+ --sf-universal-link-api Enable SFUniversalLink API
183
+ --vp9-decoder Enable VP9 Decoder
184
+ --music-kit Enable MusicKit
185
+ --shazam-kit Enable ShazamKit
186
+ --communication-notifications Enable Communication Notifications
187
+ --group-activities Enable Group Activities
188
+ --health-kit-estimate-recalibration Enable HealthKit Estimate Recalibration
189
+ --time-sensitive-notifications Enable Time Sensitive Notifications
155
190
  ```
156
191
 
157
192
  ```no-highlight
@@ -159,27 +194,62 @@ fastlane produce disable_services --help
159
194
  ```
160
195
 
161
196
  ```no-highlight
162
- --app-group Disable App Groups
163
- --apple-pay Disable Apple Pay
164
- --associated-domains Disable Associated Domains
165
- --data-protection Disable Data Protection
166
- --game-center Disable Game Center
167
- --healthkit Disable HealthKit
168
- --homekit Disable HomeKit
169
- --hotspot Disable Hotspot
170
- --icloud Disable iCloud
171
- --in-app-purchase Disable In-App Purchase
172
- --inter-app-audio Disable Inter-App-Audio
173
- --multipath Disable Multipath
174
- --network-extension Disable Network Extensions
175
- --nfc-tag-reading Disable NFC Tag Reading
176
- --personal-vpn Disable Personal VPN
177
- --passbook Disable Passbook (deprecated)
178
- --push-notification Disable Push notifications
179
- --sirikit Disable SiriKit
180
- --vpn-conf Disable VPN Configuration (deprecated)
181
- --wallet Disable Wallet
182
- --wireless-conf Disable Wireless Accessory Configuration
197
+ --access-wifi Disable Access Wifi
198
+ --app-attest Disable App Attest
199
+ --app-group Disable App Group
200
+ --apple-pay Disable Apple Pay
201
+ --associated-domains Disable Associated Domains
202
+ --auto-fill-credential Disable Auto Fill Credential
203
+ --class-kit Disable Class Kit
204
+ --icloud STRING Disable iCloud
205
+ --custom-network-protocol Disable Custom Network Protocol
206
+ --data-protection STRING Disable Data Protection
207
+ --extended-virtual-address-space Disable Extended Virtual Address Space
208
+ --game-center STRING Disable Game Center
209
+ --health-kit Disable Health Kit
210
+ --hls-interstitial-preview Disable Hls Interstitial Preview
211
+ --home-kit Disable Home Kit
212
+ --hotspot Disable Hotspot
213
+ --in-app-purchase Disable In App Purchase
214
+ --inter-app-audio Disable Inter App Audio
215
+ --low-latency-hls Disable Low Latency Hls
216
+ --managed-associated-domains Disable Managed Associated Domains
217
+ --maps Disable Maps
218
+ --multipath Disable Multipath
219
+ --network-extension Disable Network Extension
220
+ --nfc-tag-reading Disable NFC Tag Reading
221
+ --personal-vpn Disable Personal VPN
222
+ --passbook Disable Passbook (deprecated)
223
+ --push-notification Disable Push Notification
224
+ --sign-in-with-apple Disable Sign In With Apple
225
+ --siri-kit Disable Siri Kit
226
+ --system-extension Disable System Extension
227
+ --user-management Disable User Management
228
+ --vpn-configuration Disable Vpn Configuration (deprecated)
229
+ --wallet Disable Wallet
230
+ --wireless-accessory Disable Wireless Accessory
231
+ --car-play-audio-app Disable Car Play Audio App
232
+ --car-play-messaging-app Disable Car Play Messaging App
233
+ --car-play-navigation-app Disable Car Play Navigation App
234
+ --car-play-voip-calling-app Disable Car Play Voip Calling App
235
+ --critical-alerts Disable Critical Alerts
236
+ --hotspot-helper Disable Hotspot Helper
237
+ --driver-kit Disable DriverKit
238
+ --driver-kit-endpoint-security Disable DriverKit Endpoint Security
239
+ --driver-kit-family-hid-device Disable DriverKit Family HID Device
240
+ --driver-kit-family-networking Disable DriverKit Family Networking
241
+ --driver-kit-family-serial Disable DriverKit Family Serial
242
+ --driver-kit-hid-event-service Disable DriverKit HID EventService
243
+ --driver-kit-transport-hid Disable DriverKit Transport HID
244
+ --multitasking-camera-access Disable Multitasking Camera Access
245
+ --sf-universal-link-api Disable SFUniversalLink API
246
+ --vp9-decoder Disable VP9 Decoder
247
+ --music-kit Disable MusicKit
248
+ --shazam-kit Disable ShazamKit
249
+ --communication-notifications Disable Communication Notifications
250
+ --group-activities Disable Group Activities
251
+ --health-kit-estimate-recalibration Disable HealthKit Estimate Recalibration
252
+ --time-sensitive-notifications Disable Time Sensitive Notifications
183
253
  ```
184
254
 
185
255
  ## Creating Apple Pay merchants and associating them with an App ID
@@ -236,30 +306,64 @@ lane :release do
236
306
  # Optional
237
307
  # App services can be enabled during app creation
238
308
  enable_services: {
239
- access_wifi: "on", # Valid values: "on", "off"
240
- app_group: "on", # Valid values: "on", "off"
241
- apple_pay: "on", # Valid values: "on", "off"
242
- associated_domains: "on", # Valid values: "on", "off"
243
- auto_fill_credential: "on", # Valid values: "on", "off"
244
- data_protection: "complete", # Valid values: "complete", "unlessopen", "untilfirstauth",
245
- game_center: "on", # Valid values: "on", "off"
246
- health_kit: "on", # Valid values: "on", "off"
247
- home_kit: "on", # Valid values: "on", "off"
248
- hotspot: "on", # Valid values: "on", "off"
249
- icloud: "cloudkit", # Valid values: "legacy", "cloudkit"
250
- in_app_purchase: "on", # Valid values: "on", "off"
251
- inter_app_audio: "on", # Valid values: "on", "off"
252
- passbook: "on", # Valid values: "on", "off"
253
- multipath: "on", # Valid values: "on", "off"
254
- network_extension: "on", # Valid values: "on", "off"
255
- nfc_tag_reading: "on", # Valid values: "on", "off"
256
- personal_vpn: "on", # Valid values: "on", "off"
257
- passbook: "on", # Valid values: "on", "off" (deprecated)
258
- push_notification: "on", # Valid values: "on", "off"
259
- siri_kit: "on", # Valid values: "on", "off"
260
- vpn_configuration: "on", # Valid values: "on", "off" (deprecated)
261
- wallet: "on", # Valid values: "on", "off"
262
- wireless_accessory: "on", # Valid values: "on", "off"
309
+ access_wifi: "on", # Valid values: "on", "off"
310
+ app_attest: "on", # Valid values: "on", "off"
311
+ app_group: "on", # Valid values: "on", "off"
312
+ apple_pay: "on", # Valid values: "on", "off"
313
+ associated_domains: "on", # Valid values: "on", "off"
314
+ auto_fill_credential: "on", # Valid values: "on", "off"
315
+ car_play_audio_app: "on", # Valid values: "on", "off"
316
+ car_play_messaging_app: "on", # Valid values: "on", "off"
317
+ car_play_navigation_app: "on", # Valid values: "on", "off"
318
+ car_play_voip_calling_app: "on", # Valid values: "on", "off"
319
+ class_kit: "on", # Valid values: "on", "off"
320
+ icloud: "xcode5_compatible", # Valid values: "xcode5_compatible", "xcode6_compatible", "off"
321
+ critical_alerts: "on", # Valid values: "on", "off"
322
+ custom_network_protocol: "on", # Valid values: "on", "off"
323
+ data_protection: "complete", # Valid values: "complete", "unlessopen", "untilfirstauth", "off"
324
+ extended_virtual_address_space: "on", # Valid values: "on", "off"
325
+ file_provider_testing_mode: "on", # Valid values: "on", "off"
326
+ fonts: "on", # Valid values: "on", "off"
327
+ game_center: "ios", # Valid values: "ios", "macos", off"
328
+ health_kit: "on", # Valid values: "on", "off"
329
+ hls_interstitial_preview: "on", # Valid values: "on", "off"
330
+ home_kit: "on", # Valid values: "on", "off"
331
+ hotspot: "on", # Valid values: "on", "off"
332
+ hotspot_helper: "on", # Valid values: "on", "off"
333
+ in_app_purchase: "on", # Valid values: "on", "off"
334
+ inter_app_audio: "on", # Valid values: "on", "off"
335
+ low_latency_hls: "on", # Valid values: "on", "off"
336
+ managed_associated_domains: "on", # Valid values: "on", "off"
337
+ maps: "on", # Valid values: "on", "off"
338
+ multipath: "on", # Valid values: "on", "off"
339
+ network_extension: "on", # Valid values: "on", "off"
340
+ nfc_tag_reading: "on", # Valid values: "on", "off"
341
+ passbook: "on", # Valid values: "on", "off" (deprecated)
342
+ personal_vpn: "on", # Valid values: "on", "off"
343
+ push_notification: "on", # Valid values: "on", "off"
344
+ sign_in_with_apple: "on", # Valid values: "on", "off"
345
+ siri_kit: "on", # Valid values: "on", "off"
346
+ system_extension: "on", # Valid values: "on", "off"
347
+ user_management: "on", # Valid values: "on", "off"
348
+ vpn_configuration: "on", # Valid values: "on", "off" (deprecated)
349
+ wallet: "on", # Valid values: "on", "off"
350
+ wireless_accessory: "on", # Valid values: "on", "off"
351
+ driver_kit: "on", # Valid values: "on", "off"
352
+ driver_kit_endpoint_security: "on", # Valid values: "on", "off"
353
+ driver_kit_family_hid_device: "on", # Valid values: "on", "off"
354
+ driver_kit_family_networking: "on", # Valid values: "on", "off"
355
+ driver_kit_family_serial: "on", # Valid values: "on", "off"
356
+ driver_kit_hid_event_service: "on", # Valid values: "on", "off"
357
+ driver_kit_transport_hid: "on", # Valid values: "on", "off"
358
+ multitasking_camera_access: "on", # Valid values: "on", "off"
359
+ sf_universal_link_api: "on", # Valid values: "on", "off"
360
+ vp9_decoder: "on", # Valid values: "on", "off"
361
+ music_kit: "on", # Valid values: "on", "off"
362
+ shazam_kit: "on", # Valid values: "on", "off"
363
+ communication_notifications: "on", # Valid values: "on", "off"
364
+ group_activities: "on", # Valid values: "on", "off"
365
+ health_kit_estimate_recalibration: "on", # Valid values: "on", "off"
366
+ time_sensitive_notifications: "on", # Valid values: "on", "off"
263
367
  }
264
368
  )
265
369