fastlane: [screengrab] Permission denied on API level >= 24
New Issue Checklist
- Updated fastlane to the latest version
- I read the Contribution Guidelines
- I read docs.fastlane.tools
- I searched for existing GitHub issues
Issue Description
I am getting permission denied error when screengrab tries to pull the screenshots from the device. On an emulator with API level 21 everything is working fine but on API level 24, 28 and 29 there is a permission error.
It also happens on a Nexus 5X (Android 8.1.0) and a Pixel 3a XL (Android 10).
Command executed
Complete output when running fastlane, including the stack trace and command used
Ignoring ox-2.11.0 because its extensions are not built. Try: gem pristine ox --version 2.11.0 [✔] 🚀 [21:00:47]: Successfully loaded '/Volumes/Projects/Fastlane/Fastlane/screengrab/fastlane/Screengrabfile' 📄±---------------------------±----------------------------+ | Detected Values from ‘./fastlane/Screengrabfile’ | ±---------------------------±----------------------------+ | locales | [“en-US”, “fr-FR”, “it-IT”] | | clear_previous_screenshots | true | ±---------------------------±----------------------------+
[21:00:47]: To not be asked about this value, you can specify it using ‘app_package_name’ [21:00:47]: The package name of the app under test (e.g. com.yourcompany.yourapp): tools.fastlane.localetester
±----------------------------±----------------------------------------+ | Summary for screengrab 2.137.0 | ±----------------------------±----------------------------------------+ | app_package_name | tools.fastlane.localetester | | tests_package_name | tools.fastlane.localetester.test | | android_home | /Users/rickclephas/Library/Android/sdk | | locales | [“en-US”, “fr-FR”, “it-IT”] | | clear_previous_screenshots | true | | output_directory | fastlane/metadata/android | | skip_open_summary | false | | test_instrumentation_runner | androidx.test.runner.AndroidJUnitRunner | | ending_locale | en-US | | use_adb_root | false | | device_type | phone | | exit_on_test_failure | true | | reinstall_app | false | | use_timestamp_suffix | true | ±----------------------------±----------------------------------------+
[21:00:50]: Limiting the test classes run by
screengrabto just those that generate screenshots can make runs faster. [21:00:50]: Consider using the :use_tests_in_classes or :use_tests_in_packages option, and organize your tests accordingly. [21:00:50]: Clearing phoneScreenshots within fastlane/metadata/android [21:00:50]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell echo $EXTERNAL_STORAGE [21:00:50]: ▸ /sdcard [21:00:51]: Cleaning screenshots on device [21:00:51]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell rm -rf /sdcard/tools.fastlane.localetester/screengrab ls: /data/data/tools.fastlane.localetester/app_screengrab: Permission denied [21:00:51]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/en-US/images/screenshots: Permission denied [21:00:51]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/fr-FR/images/screenshots: Permission denied [21:00:51]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/it-IT/images/screenshots: Permission denied [21:00:51]: Exit status: 1 [21:00:51]: To not be asked about this value, you can specify it using ‘app_apk_path’ [21:00:51]: Select your debug app APK
- example/build/outputs/apk/androidTest/debug/example-debug-androidTest.apk
- example/build/outputs/apk/debug/example-debug.apk ? 2 [21:00:59]: To not be asked about this value, you can specify it using ‘tests_apk_path’ [21:00:59]: Select your debug tests APK
- example/build/outputs/apk/androidTest/debug/example-debug-androidTest.apk
- example/build/outputs/apk/debug/example-debug.apk ? 1 [21:01:00]: Validating app APK [21:01:00]: $ /Users/rickclephas/Library/Android/sdk/build-tools/29.0.2/aapt dump permissions example/build/outputs/apk/debug/example-debug.apk [21:01:00]: ▸ package: tools.fastlane.localetester [21:01:00]: ▸ uses-permission: name=‘android.permission.DISABLE_KEYGUARD’ [21:01:00]: ▸ uses-permission: name=‘android.permission.WAKE_LOCK’ [21:01:00]: ▸ uses-permission: name=‘android.permission.WRITE_EXTERNAL_STORAGE’ [21:01:00]: ▸ uses-permission: name=‘android.permission.READ_EXTERNAL_STORAGE’ [21:01:00]: ▸ uses-permission: name=‘android.permission.CHANGE_CONFIGURATION’ [21:01:00]: ▸ uses-permission: name=‘android.permission.DUMP’ [21:01:00]: Installing app APK [21:01:00]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 install -t -r example/build/outputs/apk/debug/example-debug.apk [21:01:00]: ▸ Performing Streamed Install [21:01:27]: ▸ Success [21:01:27]: Installing tests APK [21:01:27]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 install -t -r example/build/outputs/apk/androidTest/debug/example-debug-androidTest.apk [21:01:27]: ▸ Performing Streamed Install [21:01:30]: ▸ Success [21:01:30]: Granting the permission necessary to change locales on the device [21:01:30]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell pm grant tools.fastlane.localetester android.permission.CHANGE_CONFIGURATION [21:01:32]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell getprop ro.build.version.sdk [21:01:32]: ▸ 27 [21:01:32]: Granting the permissions necessary to access device external storage [21:01:32]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell pm grant tools.fastlane.localetester android.permission.WRITE_EXTERNAL_STORAGE [21:01:33]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell pm grant tools.fastlane.localetester android.permission.READ_EXTERNAL_STORAGE [21:01:33]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell getprop ro.build.version.sdk [21:01:34]: ▸ 27 [21:01:34]: $ /Users/rickclephas/Library/Android/sdk/build-tools/29.0.2/aapt dump badging example/build/outputs/apk/debug/example-debug.apk [21:01:34]: ▸ package: name=‘tools.fastlane.localetester’ versionCode=‘1’ versionName=‘1.0’ compileSdkVersion=‘29’ compileSdkVersionCodename=‘10’ [21:01:34]: ▸ sdkVersion:‘18’ [21:01:34]: ▸ targetSdkVersion:‘29’ [21:01:34]: ▸ uses-permission: name=‘android.permission.DISABLE_KEYGUARD’ [21:01:34]: ▸ uses-permission: name=‘android.permission.WAKE_LOCK’ [21:01:34]: ▸ uses-permission: name=‘android.permission.WRITE_EXTERNAL_STORAGE’ [21:01:34]: ▸ uses-permission: name=‘android.permission.READ_EXTERNAL_STORAGE’ [21:01:34]: ▸ uses-permission: name=‘android.permission.CHANGE_CONFIGURATION’ [21:01:34]: ▸ uses-permission: name=‘android.permission.DUMP’ [21:01:34]: ▸ application-label:‘Locale Tester’ [21:01:34]: ▸ application-label-af:‘Locale Tester’ [21:01:34]: ▸ application-label-am:‘Locale Tester’ [21:01:34]: ▸ application-label-ar:‘Locale Tester’ [21:01:34]: ▸ application-label-as:‘Locale Tester’ [21:01:34]: ▸ application-label-az:‘Locale Tester’ [21:01:34]: ▸ application-label-be:‘Locale Tester’ [21:01:34]: ▸ application-label-bg:‘Locale Tester’ [21:01:34]: ▸ application-label-bn:‘Locale Tester’ [21:01:34]: ▸ application-label-bs:‘Locale Tester’ [21:01:34]: ▸ application-label-ca:‘Locale Tester’ [21:01:34]: ▸ application-label-cs:‘Locale Tester’ [21:01:34]: ▸ application-label-da:‘Locale Tester’ [21:01:34]: ▸ application-label-de:‘Locale Tester’ [21:01:34]: ▸ application-label-el:‘Locale Tester’ [21:01:34]: ▸ application-label-en-AU:‘Locale Tester’ [21:01:34]: ▸ application-label-en-CA:‘Locale Tester’ [21:01:34]: ▸ application-label-en-GB:‘Locale Tester’ [21:01:34]: ▸ application-label-en-IN:‘Locale Tester’ [21:01:34]: ▸ application-label-en-XC:‘Locale Tester’ [21:01:34]: ▸ application-label-es:‘Locale Tester’ [21:01:34]: ▸ application-label-es-US:‘Locale Tester’ [21:01:34]: ▸ application-label-et:‘Locale Tester’ [21:01:34]: ▸ application-label-eu:‘Locale Tester’ [21:01:34]: ▸ application-label-fa:‘Locale Tester’ [21:01:34]: ▸ application-label-fi:‘Locale Tester’ [21:01:34]: ▸ application-label-fr:‘Locale Tester’ [21:01:34]: ▸ application-label-fr-CA:‘Locale Tester’ [21:01:34]: ▸ application-label-fr-FR:‘Locale Tester’ [21:01:34]: ▸ application-label-gl:‘Locale Tester’ [21:01:34]: ▸ application-label-gu:‘Locale Tester’ [21:01:34]: ▸ application-label-hi:‘Locale Tester’ [21:01:34]: ▸ application-label-hr:‘Locale Tester’ [21:01:34]: ▸ application-label-hu:‘Locale Tester’ [21:01:34]: ▸ application-label-hy:‘Locale Tester’ [21:01:34]: ▸ application-label-in:‘Locale Tester’ [21:01:34]: ▸ application-label-is:‘Locale Tester’ [21:01:34]: ▸ application-label-it:‘Locale Tester’ [21:01:34]: ▸ application-label-iw:‘Locale Tester’ [21:01:34]: ▸ application-label-ja:‘Locale Tester’ [21:01:34]: ▸ application-label-ja-JP:‘Locale Tester’ [21:01:34]: ▸ application-label-ka:‘Locale Tester’ [21:01:34]: ▸ application-label-kk:‘Locale Tester’ [21:01:34]: ▸ application-label-km:‘Locale Tester’ [21:01:34]: ▸ application-label-kn:‘Locale Tester’ [21:01:34]: ▸ application-label-ko:‘Locale Tester’ [21:01:34]: ▸ application-label-ky:‘Locale Tester’ [21:01:34]: ▸ application-label-lo:‘Locale Tester’ [21:01:34]: ▸ application-label-lt:‘Locale Tester’ [21:01:34]: ▸ application-label-lv:‘Locale Tester’ [21:01:34]: ▸ application-label-mk:‘Locale Tester’ [21:01:34]: ▸ application-label-ml:‘Locale Tester’ [21:01:34]: ▸ application-label-mn:‘Locale Tester’ [21:01:34]: ▸ application-label-mr:‘Locale Tester’ [21:01:34]: ▸ application-label-ms:‘Locale Tester’ [21:01:34]: ▸ application-label-my:‘Locale Tester’ [21:01:34]: ▸ application-label-nb:‘Locale Tester’ [21:01:34]: ▸ application-label-ne:‘Locale Tester’ [21:01:34]: ▸ application-label-nl:‘Locale Tester’ [21:01:34]: ▸ application-label-or:‘Locale Tester’ [21:01:34]: ▸ application-label-pa:‘Locale Tester’ [21:01:34]: ▸ application-label-pl:‘Locale Tester’ [21:01:34]: ▸ application-label-pt:‘Locale Tester’ [21:01:34]: ▸ application-label-pt-BR:‘Locale Tester’ [21:01:34]: ▸ application-label-pt-PT:‘Locale Tester’ [21:01:34]: ▸ application-label-ro:‘Locale Tester’ [21:01:34]: ▸ application-label-ru:‘Locale Tester’ [21:01:34]: ▸ application-label-si:‘Locale Tester’ [21:01:34]: ▸ application-label-sk:‘Locale Tester’ [21:01:34]: ▸ application-label-sl:‘Locale Tester’ [21:01:34]: ▸ application-label-sq:‘Locale Tester’ [21:01:34]: ▸ application-label-sr:‘Locale Tester’ [21:01:34]: ▸ application-label-sr-Latn:‘Locale Tester’ [21:01:34]: ▸ application-label-sv:‘Locale Tester’ [21:01:34]: ▸ application-label-sw:‘Locale Tester’ [21:01:34]: ▸ application-label-ta:‘Locale Tester’ [21:01:34]: ▸ application-label-te:‘Locale Tester’ [21:01:34]: ▸ application-label-th:‘Locale Tester’ [21:01:34]: ▸ application-label-tl:‘Locale Tester’ [21:01:34]: ▸ application-label-tr:‘Locale Tester’ [21:01:34]: ▸ application-label-uk:‘Locale Tester’ [21:01:34]: ▸ application-label-ur:‘Locale Tester’ [21:01:34]: ▸ application-label-uz:‘Locale Tester’ [21:01:34]: ▸ application-label-vi:‘Locale Tester’ [21:01:34]: ▸ application-label-zh-CN:‘Locale Tester’ [21:01:34]: ▸ application-label-zh-HK:‘Locale Tester’ [21:01:34]: ▸ application-label-zh-TW:‘Locale Tester’ [21:01:34]: ▸ application-label-zu:‘Locale Tester’ [21:01:34]: ▸ application-icon-160:‘res/mipmap-mdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-icon-240:‘res/mipmap-hdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-icon-320:‘res/mipmap-xhdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-icon-480:‘res/mipmap-xxhdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-icon-640:‘res/mipmap-xxxhdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-icon-65534:‘res/mipmap-mdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application: label=‘Locale Tester’ icon=‘res/mipmap-mdpi-v4/ic_launcher.png’ [21:01:34]: ▸ application-debuggable [21:01:34]: ▸ launchable-activity: name=‘tools.fastlane.localetester.MainActivity’ label=‘Locale Tester’ icon=‘’ [21:01:34]: ▸ feature-group: label=‘’ [21:01:34]: ▸ uses-feature: name=‘tools.fastlane.screengrab.cleanstatusbar’ [21:01:34]: ▸ uses-feature: name=‘android.hardware.faketouch’ [21:01:34]: ▸ uses-implied-feature: name=‘android.hardware.faketouch’ reason=‘default feature for all apps’ [21:01:34]: ▸ main [21:01:34]: ▸ other-activities [21:01:34]: ▸ supports-screens: ‘small’ ‘normal’ ‘large’ ‘xlarge’ [21:01:34]: ▸ supports-any-density: ‘true’ [21:01:34]: ▸ locales: ‘–_–’ ‘af’ ‘am’ ‘ar’ ‘as’ ‘az’ ‘be’ ‘bg’ ‘bn’ ‘bs’ ‘ca’ ‘cs’ ‘da’ ‘de’ ‘el’ ‘en-AU’ ‘en-CA’ ‘en-GB’ ‘en-IN’ ‘en-XC’ ‘es’ ‘es-US’ ‘et’ ‘eu’ ‘fa’ ‘fi’ ‘fr’ ‘fr-CA’ ‘fr-FR’ ‘gl’ ‘gu’ ‘hi’ ‘hr’ ‘hu’ ‘hy’ ‘in’ ‘is’ ‘it’ ‘iw’ ‘ja’ ‘ja-JP’ ‘ka’ ‘kk’ ‘km’ ‘kn’ ‘ko’ ‘ky’ ‘lo’ ‘lt’ ‘lv’ ‘mk’ ‘ml’ ‘mn’ ‘mr’ ‘ms’ ‘my’ ‘nb’ ‘ne’ ‘nl’ ‘or’ ‘pa’ ‘pl’ ‘pt’ ‘pt-BR’ ‘pt-PT’ ‘ro’ ‘ru’ ‘si’ ‘sk’ ‘sl’ ‘sq’ ‘sr’ ‘sr-Latn’ ‘sv’ ‘sw’ ‘ta’ ‘te’ ‘th’ ‘tl’ ‘tr’ ‘uk’ ‘ur’ ‘uz’ ‘vi’ ‘zh-CN’ ‘zh-HK’ ‘zh-TW’ ‘zu’ [21:01:34]: ▸ densities: ‘160’ ‘240’ ‘320’ ‘480’ ‘640’ ‘65534’ [21:01:34]: Enabling clean status bar [21:01:34]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell pm grant tools.fastlane.localetester android.permission.DUMP [21:01:34]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell settings put global sysui_demo_allowed 1 [21:01:35]: Running tests for locale: en-US [21:01:35]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell am instrument --no-window-animation -w
-e testLocale en_US
-e endingLocale en_US
-e appendTimestamp true
tools.fastlane.localetester.test/androidx.test.runner.AndroidJUnitRunner [21:01:44]: ▸ tools.fastlane.localetester.FalconScreenshots:… [21:01:50]: ▸ tools.fastlane.localetester.JUnit4StyleTests:… [21:01:50]: ▸ Time: 12.815 [21:01:50]: ▸ OK (4 tests) [21:01:50]: Running tests for locale: fr-FR [21:01:50]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell am instrument --no-window-animation -w
-e testLocale fr_FR
-e endingLocale en_US
-e appendTimestamp true
tools.fastlane.localetester.test/androidx.test.runner.AndroidJUnitRunner [21:02:00]: ▸ tools.fastlane.localetester.FalconScreenshots:… [21:02:11]: ▸ tools.fastlane.localetester.JUnit4StyleTests:… [21:02:11]: ▸ Time: 18.985 [21:02:11]: ▸ OK (4 tests) [21:02:11]: Running tests for locale: it-IT [21:02:11]: $ /Users/rickclephas/Library/Android/sdk/platform-tools/adb -s 014608952b893b39 shell am instrument --no-window-animation -w
-e testLocale it_IT
-e endingLocale en_US
-e appendTimestamp true
tools.fastlane.localetester.test/androidx.test.runner.AndroidJUnitRunner [21:02:25]: ▸ tools.fastlane.localetester.FalconScreenshots:… [21:02:34]: ▸ tools.fastlane.localetester.JUnit4StyleTests:… [21:02:34]: ▸ Time: 18.03 [21:02:34]: ▸ OK (4 tests) [21:02:34]: Pulling captured screenshots from the device ls: /sdcard/tools.fastlane.localetester/screengrab: No such file or directory [21:02:35]: Exit status: 1 ls: /data/data/tools.fastlane.localetester/app_screengrab: Permission denied [21:02:35]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/en-US/images/screenshots: Permission denied [21:02:35]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/fr-FR/images/screenshots: Permission denied [21:02:35]: Exit status: 1 ls: /data/user/0/tools.fastlane.localetester/files/tools.fastlane.localetester/screengrab/it-IT/images/screenshots: Permission denied [21:02:35]: Exit status: 1 [21:02:35]: Make sure you’ve used Screengrab.screenshot() in your tests and that your expected tests are being run.[!] No screenshots were detected 📷❌
Environment
✅ fastlane environment ✅
Stack
| Key | Value |
|---|---|
| OS | 10.15.1 |
| Ruby | 2.6.5 |
| Bundler? | true |
| Git | git version 2.20.1 |
| Installation Source | /usr/local/lib/ruby/gems/2.6.0/bin/fastlane |
| Host | Mac OS X 10.15.1 (19B88) |
| Ruby Lib Dir | /usr/local/Cellar/ruby/2.6.5/lib |
| OpenSSL Version | OpenSSL 1.1.1d 10 Sep 2019 |
| Is contained | false |
| Is homebrew | false |
| Is installed via Fabric.app | false |
| Xcode Path | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version | 11.2.1 |
System Locale
| Variable | Value | |
|---|---|---|
| LANG | en_US.UTF-8 | ✅ |
| LC_ALL | en_US.UTF-8 | ✅ |
| LANGUAGE |
fastlane files:
`./fastlane/Fastfile`
# Fetch and use the latest Fastfile from the fastlane main repository
import("../../fastlane/Fastfile")
lane(:deploy_aar) do
ensure_git_branch
ensure_git_status_clean
gradle(task: [
'screengrab-lib:clean',
'screengrab-lib:assembleRelease',
'screengrab-lib:bintrayUpload',
'-PdryRun=false'
].join(' '))
end
No Appfile found
fastlane gems
| Gem | Version | Update-Status |
|---|---|---|
| fastlane | 2.137.0 | ✅ Up-To-Date |
Loaded fastlane plugins:
No plugins Loaded
Loaded gems
| Gem | Version |
|---|---|
| did_you_mean | 1.3.0 |
| bundler | 1.17.3 |
| etc | 1.0.1 |
| psych | 3.1.0 |
| stringio | 0.0.2 |
| strscan | 1.0.0 |
| forwardable | 1.2.0 |
| rake | 11.3.0 |
| CFPropertyList | 3.0.2 |
| public_suffix | 2.0.5 |
| addressable | 2.7.0 |
| ast | 2.4.0 |
| atomos | 0.1.3 |
| babosa | 1.0.3 |
| debug_inspector | 0.0.3 |
| binding_of_caller | 0.8.0 |
| builder | 3.2.3 |
| byebug | 11.0.1 |
| claide | 1.0.3 |
| climate_control | 0.2.0 |
| coderay | 1.1.2 |
| colored | 1.2 |
| colored2 | 3.1.2 |
| highline | 1.7.10 |
| commander-fastlane | 4.4.6 |
| json | 2.2.0 |
| docile | 1.3.2 |
| simplecov-html | 0.10.2 |
| simplecov | 0.16.1 |
| tins | 1.22.2 |
| term-ansicolor | 1.7.1 |
| thor | 0.20.3 |
| coveralls | 0.8.23 |
| safe_yaml | 1.0.5 |
| crack | 0.4.3 |
| declarative | 0.0.10 |
| declarative-option | 0.1.0 |
| diff-lcs | 1.3 |
| digest-crc | 0.4.1 |
| unf_ext | 0.0.7.6 |
| unf | 0.1.4 |
| domain_name | 0.5.20190701 |
| dotenv | 2.7.5 |
| emoji_regex | 1.0.1 |
| excon | 0.70.0 |
| fakefs | 0.8.1 |
| multipart-post | 2.0.0 |
| faraday | 0.17.1 |
| http-cookie | 1.0.3 |
| faraday-cookie_jar | 0.0.6 |
| faraday_middleware | 0.13.1 |
| fastimage | 2.1.7 |
| gh_inspector | 1.1.3 |
| jwt | 2.1.0 |
| memoist | 0.16.2 |
| multi_json | 1.14.1 |
| os | 1.0.1 |
| signet | 0.12.0 |
| googleauth | 0.6.7 |
| httpclient | 2.8.3 |
| mime-types-data | 3.2019.1009 |
| mime-types | 3.3 |
| uber | 0.1.0 |
| representable | 3.0.4 |
| retriable | 3.1.2 |
| google-api-client | 0.23.9 |
| google-cloud-env | 1.3.0 |
| google-cloud-core | 1.4.1 |
| google-cloud-storage | 1.16.0 |
| mini_magick | 4.9.5 |
| multi_xml | 0.6.0 |
| plist | 3.5.0 |
| rubyzip | 1.3.0 |
| security | 0.1.3 |
| naturally | 2.2.0 |
| simctl | 1.6.6 |
| slack-notifier | 2.3.2 |
| terminal-notifier | 2.0.0 |
| unicode-display_width | 1.6.0 |
| terminal-table | 1.8.0 |
| tty-screen | 0.7.0 |
| tty-cursor | 0.7.0 |
| tty-spinner | 0.9.2 |
| word_wrap | 1.0.0 |
| nanaimo | 0.2.6 |
| xcodeproj | 1.13.0 |
| rouge | 2.0.7 |
| xcpretty | 0.3.0 |
| xcpretty-travis-formatter | 1.0.0 |
| hashdiff | 1.0.0 |
| http-accept | 1.7.0 |
| interception | 0.5 |
| method_source | 0.9.2 |
| netrc | 0.11.0 |
| parallel | 1.19.1 |
| parser | 2.6.5.0 |
| powerpack | 0.1.2 |
| pry | 0.12.2 |
| pry-byebug | 3.7.0 |
| pry-rescue | 1.5.0 |
| pry-stack_explorer | 0.4.9.3 |
| rack | 1.6.11 |
| rack-protection | 1.5.5 |
| rainbow | 2.2.2 |
| rb-readline | 0.5.5 |
| rest-client | 2.1.0 |
| rspec-support | 3.5.0 |
| rspec-core | 3.5.4 |
| rspec-expectations | 3.5.0 |
| rspec-mocks | 3.5.0 |
| rspec | 3.5.0 |
| rspec_junit_formatter | 0.2.3 |
| ruby-progressbar | 1.10.1 |
| rubocop | 0.49.1 |
| rubocop-require_tools | 0.1.2 |
| tilt | 2.0.10 |
| sinatra | 1.4.8 |
| webmock | 2.3.2 |
| xcov | 1.4.3 |
| yard | 0.9.20 |
generated on: 2019-12-09
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 10
- Comments: 27 (12 by maintainers)
@fastlane-bot not fixed yet.
@fastlane-bot nope hasn’t been fixed yet.
I don’t agree with that. While it might not be very clear that external storage is indeed not the removable storage. It is very clear that the external storage isn’t guaranteed to be available.
I think this is something that should be considered. IMO if it is possible to store and retrieve the screenshots from the internal storage that should be preferred over the external storage. While most users probably won’t have any issues with the external storage there is a chance that it won’t work for someone.
Pulling files from the internal storage is definitely possible for debug apps. Android Studio provides this functionality and I assume they use
adbfor that as well.Maybe I’ll consider a PR. I’ve been fairly busy, but it wouldn’t be too tricky a fix.
Same issue here. I also agree with @plastiv concerning
getExternalFilesDirusage, it will be way easier to grab screenshots. But I read and understand your points @rickclephas so maybe a configuration to switch fromgetFilesDirtogetExternalFilesDircould be great.@rickclephas There’s a simple workaround for the
adbd cannot run as root in production buildsproblem which is basically not to use an emulator with the Play Services installed (or a real unrooted device), instead using a “Google API” emulator instead. See this SO answer for details.@userdimi @Ajibola You might want to checkout the workaround as well.
I hope this will help making this issue no longer blocking others like https://github.com/fastlane/fastlane/issues/15777.
@fastlane-bot As can be seen in the fairly recent comments on https://github.com/fastlane/fastlane/issues/16388, this issue has still not been fixed (although there seem to be some workarounds).
Same here. Test are executed properly but the screenshot can’t be retrieved on a non-rooted phone. We tried the
adb rootwith the Android Emulator, and it worked.I have tried that solution and using a rooted emulator works. The problem is that the emulator is pretty unstable to run the screenshots tests for more than 3-4 languages. I have to use a real device and rooting that is not that easy.
It would be nice if we could run screenshots tests on real devices and grab the generated files from them without being a root user 🙏
Also having the same issue