版本发布 8
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.3.4** Changes since v3.3.3: - Fix permission denial error after Android upgrade (#6523) - Fix state restoration on certain devices (#6405, #6540) - Fix UHID_OUTPUT message parsing (#6415) - Fix failure when the uniqueId field is missing on certain devices (#6461) - Fix error log interleaving (#6487) - Fix startup issue on certain Meizu devices (#6480) - Fix handling of non-integer ANDROID_PLATFORM in build script (#6408) --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.3.3** Changes since v3.3.2: - Fix immediate error after new Android 16 upgrade (#6362) - Fix frame memory leak on Windows in specific cases (#4297, #6357) - Make virtual display presentable (#6344) --- <a id="highlights-v3.3.3"></a> # Highlights A new Android 16 beta upgrade causes scrcpy to fail immediately (see #6362 for details). This release fixes the issue. --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.2** Changes since v3.1: - Add many audio sources (#5870, #5412, #5670) - Improve/fix camera listing (#5669) - Add --display-ime-policy (#5703) - Allow controls with --no-window (#5803, #5804) - Add workaround for Pico 4 Ultra (#5659) - Fix rotation after a recent Android 15 upgrade (#5908) - Fix audio capture on Android 16 (#5698) - Make static Linux binaries compatible with older versions (#5689) - Make static macOS binaries compatible with older versions (#5649, #5697) - Upgrade FFmpeg to 7.1.1 - Upgrade libusb to 1.0.28 - Upgrade SDL to 2.32.2 - Various technical fixes --- <a id="highlights-v3.2"></a> # Highlights ## Audio sources In addition to the existing audio sources: - `output` (default): forwards the whole audio output, and disables playback on the device (mapped to [`REMOTE_SUBMIX`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#REMOTE_SUBMIX)). - `playback`: captures the audio playback (Android apps can opt-out, so the whole output is not necessarily captured). - `mic`: captures the microphone (mapped to [`MIC`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#MIC)). This version adds: - `mic-unprocessed`: captures the microphone unprocessed (raw) sound (mapped to [`UNPROCESSED`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#UNPROCESSED)). - `mic-camcorder`: captures the microphone tuned for video recording, with the same orientation as the camera if available (mapped to [`CAMCORDER`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#CAMCORDER)). - `mic-voice-recognition`: captures the microphone tuned for voice recognition (mapped to [`VOICE_RECOGNITION`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_RECOGNITION)). - `mic-voice-communication`: captures the microphone tuned for voice communications (it will for instance take advantage of echo cancellation or automatic gain control if available) (mapped to [`VOICE_COMMUNICATION`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_COMMUNICATION)). - `voice-call`: captures voice call (mapped to [`VOICE_CALL`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_CALL)). - `voice-call-uplink`: captures voice call uplink only (mapped to [`VOICE_UPLINK`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_UPLINK)). - `voice-call-downlink`: captures voice call downlink only (mapped to [`VOICE_DOWNLINK`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_DOWNLINK)). - `voice-performance`: captures audio meant to be processed for live performance (karaoke), includes both the microphone and the device playback (mapped to [`VOICE_PERFORMANCE`](https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_PERFORMANCE)). See #5870. _Note: If you record voice calls to a file, audio/video synchronization might be broken during playback. Read [more details](https://github.com/Genymobile/scrcpy/pull/5870#issuecomment-2727304756)._ ## Android 15 and 16 This version includes fixes for changes in Android 15 that broke automatic rotation (#5908) and Android 16 that broke audio capture (#5698). ## Static binaries To ensure maximum compatibility, static binaries are now built for older versions of Linux (#5689) and macOS (#5649, #5697). --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.1** Changes since v3.0.2: - Add --no-vd-destroy-content (#5615) - Improve gamepad support in games (#5623, #5362) - Inject events to main display (#5614, #5545, #5605, #5616) - Fix "turn screen off" on some devices (#4544, #5274) - Improve cleanup reliability (#5613, #5601) - Add dav1d in release builds (#5644, #4744) - Upgrade SDL to 2.30.10 --- <a id="highlights-v3.1"></a> # Highlights ## Keep virtual display content on close When a virtual display is closed, the running apps are destroyed. A new option (`--no-vd-destroy-content`, #5615) allows moving the apps to the main display instead: ``` scrcpy --new-display --no-vd-destroy-content ``` This is particularly useful for avoiding the loss of work due to unexpected disconnections. The running app can be moved back to a new virtual display afterward. _Note that the running apps follow the standard Android lifecycle. Some apps, especially 3D games, may simply restart on the main display when the virtual display is closed._ ## Gamepad support Gamepad support was implemented by #5270 in scrcpy 2.7. While it worked well with gamepad testers, it was partially or totally incompatible with many games. In this new version, several changes (#5623) allow games to detect and use gamepads correctly: - fixing the gamepad HID report descriptor - declaring the gamepad to be a well-known Xbox 360 controller ## Fix unclickable elements Since the introduction of virtual displays in scrcpy 3.0, the injection of input events has been slightly modified. While the new behavior resolves issues with virtual displays (#4598, #5137), it caused some UI elements in overlays to become unclickable. To fix the problem, this new release restores the previous behavior when mirroring the main display (#5614). ## Fix "turn screen off" on some devices On Android 14, scrcpy uses a specific mechanism to turn the screen off (#4456), but this method failed on some devices. Now, it also works on these devices: https://github.com/Genymobile/scrcpy/issues/4544#issuecomment-2526999714 ## AV1 decoder Recent devices have an AV1 encoder (and it works quite well). On Linux, when building using system libraries, it was already working. But no AV1 decoder was included in release builds. This new version adds [dav1d](https://www.videolan.org/projects/dav1d.html) support to decode AV1 streams.  --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.0.2** Changes since v3.0.1: - Fix version (#5602) --- <a id="highlights-v3.0.2"></a> # Highlights :facepalm: [Highlights of 3.0.1](https://github.com/Genymobile/scrcpy/releases/tag/v3.0.1) --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification when a new release is available, click on **Watch > Custom > Releases** at the top._ --- **scrcpy v3.0.1** Changes since v3.0: - Set main display power for virtual display (#5522) - Rollback to old --turn-screen-off method for Android 15 (#5530) - Do not reset TCP/IP connections (#5562) - Fix socket interruption on macOS (#5536) - Fix NullPointerException on certain devices (#5537) - Fix camera capture failure without retry (#5539) - Accept control events without display (#5542) - Build macOS x86_64 release (#5526) - Fix .tar.gz compression for release tarballs (#5581) - Call static binary without wrapper script (#5560) --- <a id="highlights-v3.0.1"></a> # Highlights This release fixes some issues from [scrcpy 3.0](https://github.com/Genymobile/scrcpy/releases/tag/v3.0). ## Turn screen off There were two major problems with the `--turn-screen-off` feature. Firstly, Android 15 introduced a new mechanism to set the display power, used by scrcpy 3.0 (#5418). Unfortunately, it does not work as expected: video mirroring was broken or frozen when the display power was off. Therefore, this version rolls back to the previous mechanism, even for Android 15. In addition, `--turn-screen-off` was disabled when mirroring a virtual display because there was no display to power off. However, on some devices, interacting with the virtual display requires the device to be unlocked (with the main screen powered on). In such cases, it might make sense to power on the device, but with the screen physically turned off (useful in conjunction with [stay awake](https://github.com/Genymobile/scrcpy/blob/master/doc/device.md#stay-awake) or a custom [screen off timeout](https://github.com/Genymobile/scrcpy/blob/master/doc/device.md#screen-off-timeout)). Therefore, the "turn screen off" feature is now enabled with virtual displays, and it changes the power mode of the main display. ## TCP/IP multi-instances When scrcpy was run with [`--tcpip=<addr>`](https://github.com/Genymobile/scrcpy/blob/master/doc/connection.md#automatic), to make sure a new working connection was established, any previous connection to the same address was disconnected. However, this caused all running instances connected to that address to be killed. Running several instances of scrcpy on the same device is now useful with virtual displays, so change the default behavior to NOT disconnect. To force a reconnection, a '+' prefix can be added: ```bash scrcpy --tcpip=+192.168.0.3 ``` ## Releases For scrcpy 3.0, static builds were released for Linux (x86_64) and macOS (aarch64). For 3.0.1, a new build for macOS x86_64 has been added. Some changes have been made in the way scrcpy finds dependent files (`adb`, `scrcpy-server` and `icon.png`). Static releases are build in "portable" mode, which means that scrcpy must find the expected files in the same directory as the executable. This was implemented via a wrapper shell script in 3.0, but it had limitations (e.g., it did not work properly when executing the script from a symlink in another location). This functionality is now fully implemented in C. By default, scrcpy uses the provided `adb` binary. If you want to use the `adb` binary from your system, set the `ADB` environment variable to the path of your `adb` (or just `adb` so that it is searched in `$PATH`): ```bash ADB=adb scrcpy ``` Also, the `.tar.gz` releases for 3.0 were actually non-gzipped tarballs (#5581). The tarballs for 3.0.1 are now correctly gzipped. Other specific issues have been fixed; see the full changelog above. --- - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social) - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification on new releases, click on **Watch > Custom > Releases** on the top._ --- **scrcpy v2.6.1** Changes since v2.6: - Inject finger input whenever possible (#5162, #5163) --- # Highlights See [v2.6 release notes](https://github.com/Genymobile/scrcpy/releases/tag/v2.6). Some changes in scrcpy 2.6 caused issues with mouse events in some applications. This hotfix version [fixes](773c23fda298fd3dace4ded5a89e8716d3c0fc76) them. Sorry for the inconvenience. --- - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)
_To receive a notification on new releases, click on **Watch > Custom > Releases** on the top._ --- **scrcpy v2.6** Changes since v2.5: - Add audio playback capture method (#4380, #5102) - Add audio duplication feature (#3875, #4380, #5102) - Add mouse secondary bindings with Shift+click (#5055, #5076) - Rework mouse events (#5067, #5076) - Fix "turn screen off" for Honor devices (#4823, #4943, #5109) - Add clipboard workaround for Honor devices (#4822, #5073) - Always apply device workarounds (#4922, #5140, #5148, #5154) - Fix missing initialization (#5057, #5058) - Do not report error on device disconnected (#5044) - Upgrade SDL to 2.30.5 in Windows releases - Various technical fixes --- # Highlights ## Audio mirroring Audio forwarding was introduced in scrcpy 2.0. Until now, when audio was captured by scrcpy, it was necessarily disabled on the device. This release introduces a new audio capture method, which (optionally) supports audio duplication, to keep playing audio on the device. It is exposed as an alternative audio source named `playback` (in addition to `output`, the default, and `mic`). ```bash scrcpy --audio-source=playback # do not play on the device scrcpy --audio-source=playback --audio-dup # keep playing on the device ``` For convenience, `--audio-dup` automatically selects the `playback` audio source. Therefore, to **mirror** audio rather than **forward**, this is sufficient: ```bash scrcpy --audio-dup ``` However, this playback capture has some drawbacks: - it requires Android 13 (rather than Android 11), - Android apps can opt-out, in which case they are not captured. See [documentation](https://github.com/Genymobile/scrcpy/blob/master/doc/audio.md#duplication), #4380, #5102. ## Secondary mouse bindings By default, with SDK mouse: - right-click triggers BACK (or POWER on) - middle-click triggers HOME - the 4th click triggers APP_SWITCH - the 5th click expands the notification panel It was also possible to forward the clicks to the device instead, by using the `--mouse-bind=xxxx` option introduced in the previous version (2.5). But that way, we had to choose at startup whether a button triggered a shortcut or a click. This release introduces a new set of secondary bindings via <kbd>Shift</kbd>+click, so that both are possible at runtime. **By default, a simple click triggers the shortcuts, and <kbd>Shift</kbd>+click forwards the click to the device.** _In AOA and UHID mouse modes, the default bindings are reversed: all clicks are forwarded by default, and pressing <kbd>Shift</kbd> gives access to the shortcuts (since the cursor is handled on the device side, it makes more sense to forward all mouse buttons by default in these modes)._ All these mouse bindings can be configured, check the [documentation](https://github.com/Genymobile/scrcpy/blob/master/doc/mouse.md#mouse-bindings). See [#5076](https://github.com/Genymobile/scrcpy/pull/5076). --- - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app) - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)