升级React Native 0.64生产包启动报h.playTouchSound is not a function如何解决
React Native 0.64 版本
playTouchSound is not a function 崩溃解决方案 根因说明
RN 0.64 版本存在破坏性变更:
已移除UIManagerModule中的PlayTouchSound方法,该方法已迁移至SoundManagerModule类中。
开发环境未触发崩溃是因为未开启代码混淆压缩,生产环境混淆后方法名被简化才会暴露该问题,大多由未适配RN 0.64的第三方依赖调用了旧方法导致。
最优解决方案
- 优先排查所有第三方依赖,重点核对触摸交互类、自定义UI组件类库的版本,比如
react-native-gesture-handler、社区维护的触摸钩子/组件库等,将存在旧调用的库升级到适配RN 0.64的官方版本即可从根源解决问题。 - 若为自有业务代码直接调用了旧方法,将原有调用逻辑:
UIManager.playTouchSound()
替换为新的调用方式即可:NativeModules.SoundManagerModule.playTouchSound?.()
临时兼容方案
如果依赖无官方适配版本、暂时无法定位触发问题的依赖,可以在项目入口文件(通常为index.js)顶部添加向下兼容代码:
import { UIManager, NativeModules } from 'react-native'; if (!UIManager.playTouchSound) { // 兼容旧版本调用逻辑 UIManager.playTouchSound = NativeModules.SoundManagerModule?.playTouchSound || (() => {}); }
内容的提问来源于stack exchange,提问作者Victor O'Frank
相关产品推荐
相关产品推荐

