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

Kivy用Buildozer打包调用Android服务报Class not found及release域名冲突问询

解决方法

核心问题原因

你最初出现类找不到的报错,根本原因是buildozer.spec中的services配置项处于注释状态,python-for-android打包时不会自动生成对应的服务Java类,所以调用时找不到类。使用Kivy官方保留域名的配置只是刚好匹配了参考项目的类路径,没有解决根本配置问题。

正式发布可用的配置方案

  • 第一步:恢复自定义包配置,不要占用Kivy官方保留域名,修改buildozer.spec对应配置:
[app]
title = My Application
# 自定义包名,可根据需求修改
package.name = myapp
# 替换为你自己的域名,没有实际域名也可自定义格式合法的字符串即可
package.domain = org.test
# 去掉services配置前的注释,声明你的服务,格式为「服务名:服务入口脚本路径」
# 如果服务逻辑在单独的service.py中,改为 Myservice:service.py
services = Myservice:main.py
  • 第二步:修改main.py中的服务类调用路径,和你的包配置对应即可:
# 路径规则:包域名倒写.包名.Service+你定义的服务名
service = autoclass('org.test.myapp.ServiceMyservice')
  • 第三步:清理旧的打包缓存后重新打包即可,debug和release包都可正常运行,不会触发保留域名报错。

临时测试替代方案

如果只是个人测试不需要公开发布,也可以保留org.kivy域名的配置,打包前在终端执行以下命令绕过限制即可打release包:
export BUILDOZER_ALLOW_KIVY_ORG_DOMAIN=1


内容的提问来源于stack exchange,提问作者mehdi alizade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:15:03