Разрешение Flutter Android Fastlane запрещено извлекать снимки экрана из эмулятораAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Разрешение Flutter Android Fastlane запрещено извлекать снимки экрана из эмулятора

Сообщение Anonymous »

Большинство шагов Fastlane Android Screengrab работают так, как задумано: создание моего приложения в режиме отладки с заданным параметром среды, создание тестов Android, запуск тестов Android в эмуляторе и сохранение снимков экрана на устройстве (см. выходные данные logcat). ниже), однако когда Fastlane пытается получить снимки экрана из эмулятора, он прекращает опрос местоположений после ошибки «отказано в доступе».
[20:55:07]: Pulling captured screenshots from the device
ls: /sdcard/io.outright.my_flutter_app/screengrab: No such file or directory
[20:55:07]: Exit status: 1
ls: /data/data/io.outright.my_flutter_app/app_screengrab: Permission denied
[20:55:07]: Exit status: 1
[20:55:07]: Make sure you've used Screengrab.screenshot() in your tests and that your expected tests are being run.

Я подтвердил, что использую Screengrab.screenshot() в своих тестах, и мои ожидаемые тесты выполняются. Это из логарифма эмулятора во время выполнения теста:
... Screengrab io.outright.my_flutter_app D Using screenshot storage directory: /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots
... Screengrab io.outright.my_flutter_app D Captured screenshot "0_StartScreen.png"
... Screengrab io.outright.my_flutter_app D Using screenshot storage directory: /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots
... Screengrab io.outright.my_flutter_app D Captured screenshot "1_SetupScreen.png"
... Screengrab io.outright.my_flutter_app D Using screenshot storage directory: /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots
... Screengrab io.outright.my_flutter_app D Captured screenshot "2_GameScreen.png"
... Screengrab io.outright.my_flutter_app D Using screenshot storage directory: /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots

Попытка просмотреть эти файлы с помощью adb показывает ту же ошибку разрешения:
$ adb shell ls /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots

ls: /data/user/0/io.outright.my_flutter_app/app_screengrab/en_US/images/screenshots: Permission denied

Раньше для Fastlane существовал параметр use_adb_root, но теперь он устарел и не работает ни в одной версии, начиная с 2.0
< strong>Screengrabfile
app_package_name('io.outright.my_flutter_app')
use_tests_in_packages(['io.outright.my_flutter_app'])
tests_package_name('io.outright.my_flutter_app.test')

app_apk_path('../build/app/outputs/apk/debug/app-debug.apk')
tests_apk_path('../build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk')

test_instrumentation_runner 'androidx.test.runner.AndroidJUnitRunner'

locales(['en-US'])

clear_previous_screenshots(true)

Fastfile
default_platform(:android)

platform :android do

desc "Capture screenshots"
lane :screenshots do
sh("flutter", "build", "apk", "--debug", "--dart-define=DEMO=true")
build_android_app(
task: 'assemble',
build_type: 'AndroidTest'
)
capture_android_screenshots
end

end

Журналы
$ bundle exec fastlane screenshots

[✔] 🚀
+-----------------------------------------------------------------------------------------------------+
| Used plugins |
+------------------------------------+---------+------------------------------------------------------+
| Plugin | Version | Action |
+------------------------------------+---------+------------------------------------------------------+
| fastlane-plugin-versioning_android | 0.1.1 | android_get_version_code, android_get_version_name, |
| | | android_set_version_code, android_set_version_name |
+------------------------------------+---------+------------------------------------------------------+

[20:54:38]: ------------------------------
[20:54:38]: --- Step: default_platform ---
[20:54:38]: ------------------------------
[20:54:38]: Driving the lane 'android screenshots' 🚀
[20:54:38]: -----------------------------------------------------------------
[20:54:38]: --- Step: flutter build apk --debug --dart-define\=DEMO\=true ---
[20:54:38]: -----------------------------------------------------------------
[20:54:38]: $ flutter build apk --debug --dart-define\=DEMO\=true
[20:54:38]: ▸ Changing current working directory to: /Users/kaye375751/om/StarHarvesterZero
[20:54:45]: ▸ Running Gradle task 'assembleDebug'... 5.0s
[20:54:46]: ▸ ✓ Built build/app/outputs/flutter-apk/app-debug.apk
[20:54:46]: ---------------------------------
[20:54:46]: --- Step: assembleAndroidTest ---
[20:54:46]: ---------------------------------
[20:54:46]: $ /Users/kaye375751/om/StarHarvesterZero/android/gradlew assembleAndroidTest -p .
[20:54:47]: ▸ > Task :gradle:compileJava NO-SOURCE
[20:54:47]: ▸ > Task :gradle:compileGroovy UP-TO-DATE
[20:54:47]: ▸ > Task :gradle:pluginDescriptors UP-TO-DATE
[20:54:47]: ▸ > Task :gradle:processResources UP-TO-DATE
[20:54:47]: ▸ > Task :gradle:classes UP-TO-DATE
[20:54:47]: ▸ > Task :gradle:jar UP-TO-DATE

.........many Gradle tasks.........

[20:54:50]: ▸ BUILD SUCCESSFUL in 4s
[20:54:50]: ▸ 280 actionable tasks: 1 executed, 279 up-to-date
[20:54:50]: Couldn't find any new signed apk files...
[20:54:50]: -----------------------------------------
[20:54:50]: --- Step: capture_android_screenshots ---
[20:54:50]: -----------------------------------------
[20:54:50]: Successfully loaded '/Users/kaye375751/om/StarHarvesterZero/android/fastlane/Screengrabfile' 📄

+----------------------------------------------------------------------------------------------------+
| Detected Values from './fastlane/Screengrabfile' |
+-----------------------------+----------------------------------------------------------------------+
| app_package_name | io.outright.my_flutter_app |
| use_tests_in_packages | ["io.outright.my_flutter_app"] |
| tests_package_name | io.outright.my_flutter_app.test |
| app_apk_path | ../build/app/outputs/apk/debug/app-debug.apk |
| tests_apk_path | ../build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk |
| test_instrumentation_runner | androidx.test.runner.AndroidJUnitRunner |
| locales | ["en-US"] |
| clear_previous_screenshots | true |
+-----------------------------+----------------------------------------------------------------------+

[20:54:50]: The `aapt` command could not be found relative to your provided ANDROID_HOME at /Users/kaye375751/Library/Android/sdk
[20:54:50]: Please ensure that the Android SDK is installed and you have the build tools downloaded

+----------------------------------------------------------------------------------------------------+
| Summary for screengrab 1.0.0 |
+-----------------------------+----------------------------------------------------------------------+
| android_home | /Users/kaye375751/Library/Android/sdk |
| locales | ["en-US"] |
| clear_previous_screenshots | true |
| output_directory | fastlane/metadata/android |
| skip_open_summary | false |
| app_package_name | io.outright.my_flutter_app |
| tests_package_name | io.outright.my_flutter_app.test |
| use_tests_in_packages | ["io.outright.my_flutter_app"] |
| test_instrumentation_runner | androidx.test.runner.AndroidJUnitRunner |
| ending_locale | en-US |
| app_apk_path | ../build/app/outputs/apk/debug/app-debug.apk |
| tests_apk_path | ../build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk |
| device_type | phone |
+-----------------------------+----------------------------------------------------------------------+

[20:54:50]: Clearing phoneScreenshots within fastlane/metadata/android
[20:54:50]: $ adb devices -l
[20:54:51]: ▸ List of devices attached
[20:54:51]: ▸ emulator-5554 device product:sdk_gphone64_arm64 model:sdk_gphone64_arm64 device:emu64a transport_id:2
[20:54:51]: $ adb -s emulator-5554 shell echo \$EXTERNAL_STORAGE
[20:54:51]: ▸ /sdcard
[20:54:51]: Cleaning screenshots on device
ls: /sdcard/io.outright.my_flutter_app/screengrab: No such file or directory
[20:54:51]: Exit status: 1
ls: /data/data/io.outright.my_flutter_app/app_screengrab: No such file or directory
[20:54:51]: Exit status: 1
[20:54:51]: The `aapt` command could not be found on your system, so your app APK could not be validated
[20:54:51]: Installing app APK
[20:54:51]: $ adb -s emulator-5554 install -r ../build/app/outputs/apk/debug/app-debug.apk
[20:54:51]: ▸ Performing Streamed Install
[20:54:52]: ▸ Success
[20:54:52]: Installing tests APK
[20:54:52]: $ adb -s emulator-5554 install -r ../build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk
[20:54:52]: ▸ Performing Streamed Install
[20:54:52]: ▸ Success
[20:54:52]: Granting the permission necessary to change locales on the device
[20:54:52]: $ adb -s emulator-5554 shell pm grant io.outright.my_flutter_app android.permission.CHANGE_CONFIGURATION
[20:54:52]: $ adb -s emulator-5554 shell getprop ro.build.version.sdk
[20:54:52]: ▸ 34
[20:54:52]: Granting the permissions necessary to access device external storage
[20:54:52]: $ adb -s emulator-5554 shell pm grant io.outright.my_flutter_app android.permission.WRITE_EXTERNAL_STORAGE
[20:54:52]: $ adb -s emulator-5554 shell pm grant io.outright.my_flutter_app android.permission.READ_EXTERNAL_STORAGE
[20:54:52]: Running tests for locale: en-US
[20:54:52]: $ adb -s emulator-5554 shell am instrument --no-window-animation -w \
-e testLocale en_US \
-e endingLocale en_US \
-e package io.outright.my_flutter_app \
io.outright.my_flutter_app.test/androidx.test.runner.AndroidJUnitRunner
[20:55:00]: ▸ io.outright.my_flutter_app.ScreengrabTest:s_glBindAttribLocation: bind attrib 0 name position
[20:55:00]: ▸ s_glBindAttribLocation: bind attrib 1 name color
[20:55:00]: ▸ s_glBindAttribLocation: bind attrib 2 name localCoord
[20:55:07]: ▸ .
[20:55:07]: ▸ Time: 13.232
[20:55:07]: ▸ OK (1 test)
[20:55:07]: Pulling captured screenshots from the device
ls: /sdcard/io.outright.my_flutter_app/screengrab: No such file or directory
[20:55:07]: Exit status: 1
ls: /data/data/io.outright.my_flutter_app/app_screengrab: Permission denied
[20:55:07]: Exit status: 1
[20:55:07]: Make sure you've used Screengrab.screenshot() in your tests and that your expected tests are being run.
+-----------------------------------------------------------+
| Lane Context |
+-------------------------------------+---------------------+
| DEFAULT_PLATFORM | android |
| PLATFORM_NAME | android |
| LANE_NAME | android screenshots |
| GRADLE_BUILD_TYPE | AndroidTest |
| GRADLE_ALL_APK_OUTPUT_PATHS | [] |
| GRADLE_ALL_AAB_OUTPUT_PATHS | [] |
| GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS | [] |
| GRADLE_ALL_MAPPING_TXT_OUTPUT_PATHS | [] |
+-------------------------------------+---------------------+
[20:55:07]: Called from Fastfile at line 62
[20:55:07]: ```
[20:55:07]: 60: build_type: 'AndroidTest'
[20:55:07]: 61: )
[20:55:07]: => 62: capture_android_screenshots
[20:55:07]: 63: upload_to_play_store
[20:55:07]: 64: end
[20:55:07]: ```
[20:55:07]: No screenshots were detected 📷❌

+--------------------------------------------------------------------------+
| fastlane summary |
+------+-----------------------------------------------------+-------------+
| Step | Action | Time (in s) |
+------+-----------------------------------------------------+-------------+
| 1 | default_platform | 0 |
| 2 | flutter build apk --debug --dart-define\=DEMO\=true | 7 |
| 3 | assembleAndroidTest | 4 |
| 💥 | capture_android_screenshots | 16 |
+------+-----------------------------------------------------+-------------+

[20:55:07]: fastlane finished with errors

[!] No screenshots were detected 📷❌


Подробнее здесь: https://stackoverflow.com/questions/792 ... s-from-the
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»