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

在Google Colab解决Kivy Android打包libffi configure.ac宏未定义错误

解决Google Colab中Buildozer打包Kivy应用时libffi编译错误的方案

1. 补全Colab环境编译依赖

libffi编译依赖libtool、automake等工具,先在Colab终端执行以下命令安装:

!apt-get update && apt-get install -y libtool automake autoconf

2. 修改libffi配方的编译逻辑

Buildozer默认的libffi配方未适配新的编译流程,需要修改.buildozer/android/platform/python-for-android/recipes/libffi/__init__.py:

  • 找到build_arch方法,替换为以下代码,确保先执行autogen.sh生成合法的configure文件:
    def build_arch(self, arch):
        env = self.get_env(arch)
        build_dir = self.get_build_dir(arch.arch)
        # 先运行autogen.sh生成最新配置文件
        self.run_cmd(['./autogen.sh'], env=env, cwd=build_dir)
        # 执行configure并指定交叉编译参数
        configure_args = [
            './configure',
            '--host=' + arch.toolchain_prefix,
            '--prefix=' + build_dir,
            '--disable-static',
            '--enable-shared',
        ]
        self.run_cmd(configure_args, env=env, cwd=build_dir)
        # 编译并安装
        self.run_cmd(['make', '-j' + str(multiprocessing.cpu_count())], env=env, cwd=build_dir)
        self.run_cmd(['make', 'install'], env=env, cwd=build_dir)
    
  • 若找不到该文件,先执行一次buildozer -v android debug触发依赖下载,之后再修改。

3. 清理旧编译缓存

删除Buildozer的旧编译产物,避免缓存干扰:

!rm -rf .buildozer/android/platform/build
!rm -rf .buildozer/android/platform/python-for-android/builds

4. 指定libffi新版本

在buildozer.spec中强制使用较新的libffi版本(如3.4.4),避免旧版本的配置问题:

[app]
# 保留原有配置,添加以下内容
requirements = python3,kivy,sympy,libffi==3.4.4

5. 手动替换libffi源码包(可选)

若配方修改无效,手动替换源码包:

  1. 下载最新libffi源码:
!wget https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz
  1. 替换到Buildozer缓存目录:
!cp libffi-3.4.4.tar.gz .buildozer/android/platform/python-for-android/recipes/libffi/
  1. 同步修改配方文件中的版本号,将version = '旧版本号'改为version = '3.4.4'。

6. 处理过时宏警告

若仍有过时宏警告,在configure.ac开头添加兼容声明:

AC_PREREQ([2.69])
AC_CONFIG_MACRO_DIR([m4])

同时确保autogen.sh包含以下内容,自动生成必要的宏文件:

#!/bin/sh
aclocal
autoconf
automake --add-missing

完成以上步骤后,重新执行打包命令:

!buildozer -v android debug

内容的提问来源于stack exchange,提问作者Fluid Homer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:42:23