From 720e5fa50417f9991dffba7aaafe4b9a41c20290 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Mon, 3 Mar 2025 21:04:00 +0800 Subject: [PATCH] fix: revert gadb device ScreenCap --- internal/version/VERSION | 2 +- pkg/gadb/device.go | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/internal/version/VERSION b/internal/version/VERSION index 8869c706..be9d3f38 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2503032054 +v5.0.0+2503032117 diff --git a/pkg/gadb/device.go b/pkg/gadb/device.go index ca263bab..9a9abd4d 100644 --- a/pkg/gadb/device.go +++ b/pkg/gadb/device.go @@ -722,5 +722,25 @@ func (d *Device) IsPackageRunning(packageName string) bool { } func (d *Device) ScreenCap() ([]byte, error) { - return d.RunShellCommandV2WithBytes("screencap", "-p") + if d.HasFeature(FeatShellV2) { + return d.RunShellCommandV2WithBytes("screencap", "-p") + } + + // for shell v1, screenshot buffer maybe truncated + // thus we firstly save it to local file and then pull it + tempPath := fmt.Sprintf("/data/local/tmp/screenshot_%d.png", + time.Now().Unix()) + _, err := d.RunShellCommandWithBytes("screencap", "-p", tempPath) + if err != nil { + return nil, err + } + + // remove temp file + defer func() { + go d.RunShellCommand("rm", tempPath) + }() + + buffer := bytes.NewBuffer(nil) + err = d.Pull(tempPath, buffer) + return buffer.Bytes(), err }