Closed kentcb closed 5 years ago
My suspicion is that something in Dart-land has changed such that the streamCmd
implementation is no longer returning so screenshots
gets stuck waiting. If I execute flutter drive
by itself then everything works, including screenshots being output to /tmp/screenshots/test/
on my Mac.
Strange, because screenshots also calls flutter drive <test path>
.
BTW: the dev branch has several bug fixes and new features. You might want to try it:
git checkout dev
pub global activate --source path .
Just getting a different error trying that ("No devices detected").
I'd like to dig in and debug, but struggling to figure out how to do so. I set up a launch configuration like this:
{
"name": "Run",
"type": "dart",
"request": "launch",
"program": "bin/main.dart",
"cwd": "/Users/Repository/MyRepo/"
}
But this gives me an error when attempting to launch:
Error: spawn /bin/sh ENOENT
The culprit is the cwd
, but I need that to point to the directory in which my app resides.
Any ideas?
I'm not familiar with this launch configuration. Where does it come from?
Why are you on the flutter master channel? Are you using a new flutter feature that has not been released yet? The flutter master channel is notorious for constantly changing (it's where all the latest code is checked-in before it goes to the beta channel and then to the stable channel).
It's a lot more reliable to use the stable channel... that's where you would find most of the support for third-party tools... like screenshots.
Sorry, I didn't provide sufficient context.
I am trying to get my app to the app stores (hence, using screenshots
to grab screens for the submissions). A long-standing bug in flutter has prevented me building for iOS (on Codemagic) for quite some time. It was recently addressed so I switched from stable
to master
in order to move forward. The only breakages I've noted have been with screenshots
and flutter_advanced_networkimage
packages. I've been able to work around both breakages, but am trying to do even better if possible.
The configuration I showed is a VS Code launch configuration. i.e. it tells VS Code what to do when you run or debug the program. In my case, I was trying to tell it to run in the context (working directory) of my actual app so that it reproduced the problem I was experiencing when running screenshots
in standalone fashion.
Maybe I'm better off waiting for the fix to land in stable
, or at least beta
/dev
. It's just a bit frustrating to be finally finished my app but not be able to release it :)
screenshots currently does not have a verbose logging feature (looks like there may be a need to add one). You can try to uncomment some of the print statements and add your own and maybe also add verbose options where screenshots makes calls to run a command (for example flutter drive -v
).
Assuming you are running screenshots locally, and if you intend to run screenshots in a CI/CD environment, or in general, there should be no requirement to launch from an IDE like VSCode or Android Studio.
From your log above, I notice that the method for forwarding the VM_SERVICE_URL now includes a random key (http://127.0.0.1:32813/bp9xbtUc2jc=/) with possibly unescaped characters which may be getting interpreted somewhere (possibly the dart interpreter, or the shell the process is running in).
I tried running tests with the example app on the master channel and I got the same problem:
I will look into this as I am under the impression the new VM_SERVICE_URL format is a legit new thing that will make it into the stable channel.
BTW: If screenshots runs locally with your app in the stable channel, you can always upload the images manually to both stores instead of running it in codemagic.
BTW2: you mention you where able to work around the screenshots breakage. Was this on the master channel?
I ran the test on the example app in the master channel and, even though the test passed, I got a ton of RPC errors:
[trace] FlutterDriver: Unhandled RPC error:
JSON-RPC error -32601 (method not found): Unknown method "streamNotify".
Hi,
screenshots does not work against
master
, even thoughflutter drive
does. The output I'm getting is:And there is just hangs. It does the same thing if I disable Android and just use iOS.