如何在Windows 10上运行为安卓设备开发的Python代码
Windows 10本地调试含安卓专属依赖Kivy应用的可行方案
plyer的STT能力是直接对接安卓系统语音服务API实现的,没有安卓运行环境无法在原生Windows Python环境下直接运行,你可以用以下本地方案实现调试,无需反复把代码传到实体手机:
- 启用Windows自带安卓子系统(WSA)
Win10满足版本要求的话可以直接开启WSA功能,在子系统内安装Pydroid3,将电脑上存放项目代码的文件夹设置为WSA可访问的共享目录,之后直接在子系统的Pydroid3中打开共享目录下的代码运行即可,运行环境和实体手机完全一致。只要给WSA开放麦克风权限,STT功能可以正常调用,本地修改代码后无需传输,直接在子系统内重载就能看到效果,WSA的安卓版本和主流打包工具生成的APK兼容度很高,调试结果参考性强。 - 本地部署安卓x86虚拟机
通过虚拟机软件运行x86架构的安卓系统镜像,在虚拟安卓系统内安装Pydroid3,开启主机与虚拟机的共享文件夹功能,把本地项目目录直接挂载到虚拟机中,本地修改完代码直接在虚拟机内重载运行即可。开启硬件虚拟化的前提下,虚拟机运行流畅度和实体手机差距很小,麦克风、摄像头等硬件都可以直接映射主机设备,plyer的STT功能可以正常触发使用。 - 非STT逻辑调试阶段加mock层提升效率
日常调试UI布局、和语音识别无关的业务逻辑时,可以在代码中加入平台判断,非安卓环境下用模拟的STT对象返回测试数据,不用每次启动安卓运行环境,大幅提升调试效率,示例代码如下:
只有需要测试真实语音识别逻辑的时候,再切到前面说的安卓模拟环境运行即可。from kivy.utils import platform if platform == "android": from plyer import stt else: # 非安卓环境模拟STT实现 class MockSTT: def start_listening(self): # 模拟识别结果,直接触发业务回调 self.results = ["模拟语音识别测试文本"] if hasattr(self, "on_results"): self.on_results(self.results) def stop_listening(self): pass stt = MockSTT()
注意:不要尝试在原生Windows Python环境下强行安装适配安卓的plyer组件,这类组件底层依赖安卓框架的Java层接口,没有完整安卓运行环境无法正常工作,所有能跑通安卓专属API的方案本质都是在Windows上运行了完整的安卓 runtime。
内容的提问来源于stack exchange,提问作者DXNI
相关产品推荐
相关产品推荐

