Closed7
スクショテスト実装:screengrabでの撮影に失敗する
ピン留めされたアイテム
使っていたfastlaneのバージョンをあげたら改善したみたいです。
fastlane 2.142.0 で対処されたらしい。
Screengrabのバージョン2.0.0 で発生。
[13:29:29]: Pulling captured screenshots from the device
ls: /sdcard/[プロジェクト名]/screengrab: No such file or directory
[13:29:29]: Exit status: 1
ls: /data/data/[プロジェクト名]/app_screengrab: Permission denied
[13:29:29]: Exit status: 1
ls: /data/user/0/[プロジェクト名]/files/[プロジェクト名]/screengrab/ja-JP/images/screenshots: Permission denied
[13:29:29]: Exit status: 1
[13:29:29]: Make sure you've used Screengrab.screenshot() in your tests and that your expected tests are being run.
[13:29:29]: No screenshots were detected 📷❌
最新バージョンである v2.0.0 。リリース日は2019/11/14。
類似のissueが多数上がっており、一部スクショを保存するフォルダ階層などの修正も行われたようす。
しかし未解決とするコメントも多い。
問題の原因が判明?
Google Play ストアを含むシステム イメージはリリースキーで署名されています。つまり、それらのイメージでは、昇格された権限(root)を取得することはできません。
起動するエミュレータのroot権限が取得できなかったためフォルダにアクセスできず、撮影したスクショのデータ吸い上げに失敗していたようです。
とりあえず root権限が取得できるエミュレータを使えば問題なくスクショできた。
スクショ取得成功:⭕️、失敗:❌
screengrabバージョン | Nexus_5X(playstoreロゴ有) | Nexus_6(playstoreロゴ無) |
---|---|---|
1.2.0 | ⭕️ | ⭕️ |
2.0.0 | ❌ | ⭕️ |
しかし、
root権限が原因だとしたら、逆になぜ v1.2.0 で成功していたのか??とても気持ち悪い。
screengrabの内部実装をみてみる。
スクショ保存先フォルダを定義しているのはここっぽい。
"/data/user/0/#{app_package_name}/files/#{app_package_name}/screengrab/#{locale}/images/screenshots",
"/data/data/#{app_package_name}/files/#{app_package_name}/screengrab/#{locale}/images/screenshots",
"/data/data/#{app_package_name}/app_screengrab/#{locale}/images/screenshots",
"/data/data/#{app_package_name}/screengrab/#{locale}/images/screenshots"
AndroidStudio の Device File Explorer から確認すると、
端末によってまちまちだが、確かに上記のフォルダのどこかしらにはスクショ保存ができている。
デグレだったら解決してみたいけど、、余裕があったら調べたい。
このスクラップは2021/02/27にクローズされました