将 expo-audio 从 57.x 升级到 58.x
根据 TypeScript 类型自动比较 expo-audio 57.0.5 与 58.0.9 的公开 API。签名变化表示可能存在不兼容变更,并非确定结论。
概要
| 已删除的导入路径 | 0 |
|---|---|
| 已删除的导出 | 0 |
| 已修改的签名 | 7 |
| 已删除的类或接口成员 | 0 |
| 已修改的类或接口成员 | 1 |
| 新增弃用 | 0 |
| 要求变化(engines、peer 依赖) | 0 |
| 新增导出 | 2 |
已删除的导出
未发现。
已修改的签名
| export | 之前 | 之后 |
|---|---|---|
expo-audio · RecorderState | { canRecord: boolean; isRecording: boolean; durationMillis: number; mediaServicesDidReset: boolean; metering?: number | undefined; url: string | null; } | { canRecord: boolean; isRecording: boolean; durationMillis: number; fileSize: number; mediaServicesDidReset: boolean; metering?: number | undefined; url: string | null; } |
expo-audio · AudioLoadOptions | { updateInterval?: number | undefined; downloadFirst?: boolean | undefined; crossOrigin?: "anonymous" | "use-credentials" | undefined; keepAudioSessionActive?: boolean | undefined; preferredForwardBufferDuration?: number | undefined; } | { updateInterval?: number | undefined; downloadFirst?: boolean | undefined; crossOrigin?: "anonymous" | "use-credentials" | undefined; keepAudioSessionActive?: boolean | undefined; preferredForwardBufferDuration?: number | undefined; allowsExternalPlayback?: boolean | undefined; } |
expo-audio · InterruptionMode | "mixWithOthers" | "doNotMix" | "duckOthers" | "mixWithOthers" | "doNotMix" | "doNotMixPersistent" | "duckOthers" |
expo-audio · RecordingOptions | { directory?: RecordingDirectory | undefined; isMeteringEnabled?: boolean | undefined; extension: string; sampleRate: number; numberOfChannels: number; bitRate: number; android: RecordingOptionsAndroid; ios: RecordingOptionsIos; web: RecordingOptionsWeb; } | { directory?: RecordingDirectory | undefined; fileName?: string | undefined; isMeteringEnabled?: boolean | undefined; extension: string; sampleRate: number; numberOfChannels: number; bitRate: number; android: RecordingOptionsAndroid; ios: RecordingOptionsIos; web: RecordingOptionsWeb; } |
expo-audio · AudioPlayerOptions | { updateInterval?: number | undefined; downloadFirst?: boolean | undefined; crossOrigin?: "anonymous" | "use-credentials" | undefined; keepAudioSessionActive?: boolean | undefined; preferredForwardBufferDuration?: number | undefined; } | { updateInterval?: number | undefined; downloadFirst?: boolean | undefined; crossOrigin?: "anonymous" | "use-credentials" | undefined; keepAudioSessionActive?: boolean | undefined; preferredForwardBufferDuration?: number | undefined; allowsExternalPlayback?: boolean | undefined; } |
expo-audio · AudioLockScreenOptions | { showSeekForward?: boolean | undefined; showSeekBackward?: boolean | undefined; isLiveStream?: boolean | undefined; } | { showSeekForward?: boolean | undefined; showSeekBackward?: boolean | undefined; showNextTrack?: boolean | undefined; showPreviousTrack?: boolean | undefined; isLiveStream?: boolean | undefined; } |
expo-audio · InterruptionModeAndroid | "mixWithOthers" | "doNotMix" | "duckOthers" | "mixWithOthers" | "doNotMix" | "doNotMixPersistent" | "duckOthers" |
已删除的类或接口成员
未发现。
已修改的类或接口成员
| member | 之前 | 之后 |
|---|---|---|
AudioPlayer.constructor | (source: AudioSource, updateInterval: number, keepAudioSessionActive: boolean, preferredForwardBufferDuration: number): AudioPlayer | (source: AudioSource, updateInterval: number, keepAudioSessionActive: boolean, preferredForwardBufferDuration: number, allowsExternalPlayback: boolean): AudioPlayer |
新增弃用
未发现。
要求变化(engines、peer 依赖)
未发现。
新增导出 (2)
| import | export | kind |
|---|---|---|
expo-audio | AudioStreamFileRecordingResult | type |
expo-audio | AudioStreamFileRecordingOptions | type |
这些版本之间的 changelog
软件包作者发布的文本,按原样显示。
58.0.9
### Patch Changes
- [iOS] Re-apply `preferredForwardBufferDuration` when the player item is replaced or a loop item is queued. ([#50468](https://github.com/expo/expo/pull/50468) by [@rmotafreitas](https://github.com/rmotafreitas))58.0.8
### Patch Changes
- [Android] Request audio focus when playback is started from the notification, the lock screen or a media button, so it pauses for an incoming call like playback started from JS. ([#50745](https://github.com/expo/expo/pull/50745) by [@enavermate](https://github.com/enavermate))58.0.7
### Patch Changes
- [iOS] Fix `currentDate` call in `replace()` freezing the app for up to several seconds while the new source loads. ([#50724](https://github.com/expo/expo/pull/50724) by [@tomKFM](https://github.com/tomKFM))58.0.6
### Patch Changes
- [iOS][Android] Fixed recorders that the user paused starting to record again when the app returned to the foreground. On iOS, this also happened to recorders that were only prepared, and when an audio interruption ended. Now only recordings that the system paused are resumed. ([#51048](https://github.com/expo/expo/pull/51048) by [@alanjhughes](https://github.com/alanjhughes))58.0.5
### Patch Changes
- [Android] Fixed `prepareToRecordAsync` rejecting when `allowsBackgroundRecording` is `true` and the notification permission is not granted ([#50705](https://github.com/expo/expo/issues/50705)). ([#50968](https://github.com/expo/expo/pull/50968) by [@alanjhughes](https://github.com/alanjhughes))
- [Web] Fixed an uncaught promise rejection, and `playing` staying `true`, when the browser blocks playback before the user interacts with the page. The player now reports the rejection in `error` on its status ([#36264](https://github.com/expo/expo/issues/36264)). ([#50972](https://github.com/expo/expo/pull/50972) by [@alanjhughes](https://github.com/alanjhughes))
- [Android] Fix `prepareToRecordAsync()` hanging forever when background recording is enabled and the recording service never connects. The binding timeout is now started, and the promise also rejects when the React context is lost. ([#50883](https://github.com/expo/expo/pull/50883) by [@Cedric921](https://github.com/Cedric921))58.0.4
### Patch Changes
- Bump precompiled artifacts due to ABI breakage in expo-modules-jsi@58.0.6. ([#50881](https://github.com/expo/expo/pull/50881) by [@kitten](https://github.com/kitten))58.0.3
### Patch Changes
- Force-bump all packages, due to migration to changesets. ([#50762](https://github.com/expo/expo/pull/50762) by [@kitten](https://github.com/kitten))58.0.2
### 🐛 Bug fixes
- [Android] Fixed `AudioStream` buffer events including unrecorded trailing bytes after a short read. ([#50327](https://github.com/expo/expo/pull/50327) by [@alanjhughes](https://github.com/alanjhughes))58.0.1
_This version does not introduce any user-facing changes._58.0.0
### 🛠 Breaking changes
- Paused time is now excluded from the `AudioRecorder` duration limit. ([#49239](https://github.com/expo/expo/pull/49239) by [@stvrmrz](https://github.com/stvrmrz) and [@behenate](https://github.com/behenate))
- [Android] Aligned the default audio focus request on Android 7.0–7.1 with newer versions by using transient exclusive focus when no interruption mode has been configured. ([#49101](https://github.com/expo/expo/pull/49101) by [@behenate](https://github.com/behenate))
### 🎉 New features
- [Android] Added support for `keepAudioSessionActive`. ([#49108](https://github.com/expo/expo/pull/49108) by [@behenate](https://github.com/behenate))
- Added the `doNotMixPersistent` interruption mode. ([#49101](https://github.com/expo/expo/pull/49101) by [@behenate](https://github.com/behenate))
- Added `fileName` option to `RecordingOptions` to allow specifying the recording file basename on Android and iOS. ([#47265](https://github.com/expo/expo/pull/47265) by [@silwalprabin](https://github.com/silwalprabin))
- Support lockscreen controls with playlists. ([#46020](https://github.com/expo/expo/pull/46020) by [@alanjhughes](https://github.com/alanjhughes))
- Added a `fileSize` field to `RecorderState` reporting the current size of the recording file in bytes. ([#46808](https://github.com/expo/expo/pull/46808) by [@behenate](https://github.com/behenate))
- Added `startFileRecordingAsync` and `stopFileRecordingAsync` methods to `AudioStream` for continuous WAV and PCM file recording alongside buffer streaming. ([#46771](https://github.com/expo/expo/pull/46771) by [@behenate](https://github.com/behenate))
- [iOS] Added `allowsExternalPlayback` option to `AudioPlayerOptions`. Set to `false` to keep the local player in control during AirPlay, fixing `player.loop` not firing. ([#48366](https://github.com/expo/expo/pull/48366) by [@zoontek](https://github.com/zoontek))
### 🐛 Bug fixes
- Preserve recorder duration limits across pauses, consistently exclude paused time on Android, iOS, and Web. ([#49239](https://github.com/expo/expo/pull/49239) by [@stvrmrz](https://github.com/stvrmrz) and [@behenate](https://github.com/behenate))
- [Android] Pause audio players and playlists when headphones or Bluetooth audio devices disconnect. ([#48151](https://github.com/expo/expo/pull/48151) by [@vivekjm](https://github.com/vivekjm))
- [Android] Give the lock-screen `MediaSession` instances a unique ID so concurrent active players (and the basic session) no longer collide on the empty default. ([#47101](https://github.com/expo/expo/issues/47101) by [@tsushanth](https://github.com/tsushanth))
- [Android] Fix stale lock screen artwork when updating metadata without an `artworkUrl`. ([#45738](https://github.com/expo/expo/pull/45738) by [@behenate](https://github.com/behenate))
- [Android] Don't start playback when the system denies audio focus, and log a warning explaining that background playback needs an active media playback foreground service. 把这些数据交给你的 AI 智能体
Vigia 是免费的 MCP 服务器:你的编程智能体在写代码之前就能检查版本、不兼容变更和安全漏洞。无需注册,无需 API 密钥。
claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp
添加到 Cursor添加到 VS Code★ 在 GitHub 上加星
任何其他 MCP 客户端
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }常见问题
将 expo-audio 从 57 升级到 58 有哪些不兼容变更?
在 expo-audio 57.0.5 与 58.0.9 之间,Vigia 发现 0 个已删除的导出、7 个已修改的签名,以及 1 个已删除或修改的类或接口成员。
expo-audio 58 中弃用了哪些内容?
expo-audio 58.0.9 中有 0 个导出或成员新被标记为弃用。
供智能体使用
GET https://vigia.coredls.cloud/v1/packages/npm/expo-audio/upgrade?from=57.0.5&to=58.0.9