Buildozer打包Kivy Android应用时pyjnius自定义Java接口异常
问题:Android打包后Python实现Java接口出现类加载器可见性异常
这是一个大型应用的简化版本,核心需求是实现Java回调对象调用Python方法,基于Kivy框架开发,涉及文件包括main.py、Print.java、IPrint.java、Holder.java以及buildozer.spec配置文件。简化版仅实现启动Kivy应用并打印“hi”的功能,但通过Buildozer打包为Android应用后运行报错:
<originating from main.py: self.printer=Print()> jnius.jnius.JavaException: JVM exception occurred: interface com.example.IPrint is not visible from class loader java.lang.IllegalArgumentException
已排查的关键信息
- 替换为Java原生实现的
Print类时,应用运行正常,确认问题根源在继承PythonJavaClass的自定义Python类上。 - 故意拼写错误
IPrint接口名称时,触发“类未找到”异常,说明IPrint接口的配置可被正常识别。 - 代码在MacBook本地运行无异常,但Buildozer打包的Android应用出现类加载器可见性错误。
- 尝试将Java类编译为Jar文件配置到项目中,问题未解决;单独为
IPrint生成Jar时提示资源重复,且无法通过pyjnius的autoclass/JavaClass加载该接口,实例化时会触发另一种跨平台异常。
内容的提问来源于stack exchange,提问作者Kieron Harrower
相关产品推荐
相关产品推荐

