You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildozer构建APK时PyAudio安装报错:bits/libc-header-start.h未找到

GitHub Actions构建Android APK时PyAudio编译失败解决方案

问题描述

开发的PaadasML应用依赖SpeechRecognition包,而SpeechRecognition需要PyAudio支持,因此在buildozer.spec的requirements中添加了PyAudio。但通过GitHub Actions构建APK时出现编译报错,核心错误信息如下:

/usr/include/limits.h:26:10: fatal error: 'bits/libc-header-start.h' file not found
34939  #include <bits/libc-header-start.h>
34940           ^~~~~~~~~~~~~~~~~~~~~~~~~~
34941  1 error generated.
34942  error: command '/usr/bin/ccache' failed with exit code 1
34943  error: subprocess-exited-with-error

34945  × Building wheel for pyaudio (pyproject.toml) did not run successfully.
34946  │ exit code: 1
ERROR: Failed building wheel for pyaudio
34954Failed to build pyaudio
34955ERROR: Could not build wheels for pyaudio, which is required to install pyproject.toml-based projects

现有困惑

  • 已知apt install gcc-multilib可解决类似头文件缺失问题,但不清楚如何将该命令整合进Buildozer的构建流程
  • 未找到可添加到requirements列表的Python包来规避编译问题
  • 怀疑32/64位架构不兼容,但不知道如何在GitHub Actions中控制编译架构
  • 本地尝试多种修复方案均未解决问题

可行修复方案

1. 在GitHub Actions中提前安装系统依赖

在GitHub Actions的工作流文件中,执行Buildozer命令前添加系统依赖安装步骤,确保gcc-multilib已安装:

- name: Install required system packages
  run: sudo apt-get update && sudo apt-get install -y gcc-multilib

2. 强制使用32位架构编译

配置Buildozer指定32位Android架构

修改buildozer.spec文件,添加或修改以下配置项:

# 指定Android 32位架构
android.arch = armeabi-v7a

在GitHub Actions中指定32位编译命令

执行Buildozer时显式指定架构:

buildozer android debug --arch armeabi-v7a

3. 绕过PyAudio依赖(替代方案)

由于PyAudio在Android环境下编译难度较高,可改用SpeechRecognition支持的其他音频输入方式:

  • 使用Kivy的AudioRecorder组件捕获音频流,将音频数据转换为SpeechRecognition可处理的格式
  • 替换为Android原生音频API实现音频捕获,再传递给SpeechRecognition进行识别

内容的提问来源于stack exchange,提问作者Sameer Mahajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:55:14