我之前从未在打包 Kivy 应用程序时遇到过问题,但最近我遇到了一个问题:应用程序可以在我的手机上正常安装,但在打开时,它会在预加载图标处冻结,并提示「无法提取公开数据」。我认为问题出在我的 sqlite3 文件上。所以我更改了它的名称,并在终端命令 ./distribute.sh 中添加了 -m "sqlite3 kivy",但问题仍然存在。而我的 build.py 文件如下:
./build.py --dir /home/toufic/Desktop/Pay4 --name "Lebanese PayCalc" --package org.demo.PayCalc --version 1.2.4 --icon /home/toufic/Desktop/Pay4/lp.png --presplash /home/toufic/Desktop/Pay4/onmyown.png --permission INTERNET --permission WRITE_EXTERNAL_STORAGE --window debug installd
如果我尝试使用 buildozer 编译,就会出现以下错误:
File "/usr/lib/python2.7/bsddb/__init__.py", line 270, in <lambda>
return _DeadlockWrap(lambda: self.db[key]) # self.db[key]
bsddb.db.DBPageNotFoundError: (-30985, 'DB_PAGE_NOTFOUND: Requested page not found')
在我的 main.py 文件中,有以下依赖项:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from net_pay_oop import * # it's a class i have written and using its instance in my code
from kivy.uix.popup import Popup
from kivy.uix.label import Label
import sqlite3
import datetime
import os
import math
import smtplib
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager,Screen
import sys
简而言之,我需要一种正确的方法来编译它,无论是使用 python-for-android 还是 Buildozer 实用程序(我对此很陌生)。谁能根据我正在使用的模块提供帮助,或者有没有办法调试构建并找出问题所在?
编辑:我让应用程序打开了,但 SMTP 服务无法运行。我是否应该执行 ./distribute.sh "openssl sqlit3 kivy"?
- 解决方案
为了解决这个问题,可以尝试以下方法:
1)确保使用的是最新版本的 Kivy 和 Buildozer。
2)检查 main.py 文件中导入的模块是否正确,确保没有拼写错误或缺少必要的模块。
3)确保 build.py 文件中的参数正确,特别是 --dir、--name、--package、--version、--icon、--presplash、--permission 和 --window 等参数。
4)如果使用的是 Buildozer 编译,则需要确保已经安装了 Buildozer 的所有依赖项,并且您的环境变量已正确配置。
5)如果仍然遇到问题,可以尝试使用 python-for-android 编译,看看是否能够成功打包。
6)对于 SMTP 服务无法运行的问题,可以检查您的代码中是否正确配置了 SMTP 服务器和端口,并且您已经正确设置了发件人电子邮件地址和密码。
7)如果尝试了上述方法后问题仍然存在,可以尝试在 Kivy 和 Buildozer 的官方文档中查找更多信息,或在相关论坛上寻求帮助。
# 代码示例
# 在终端中运行以下命令来编译应用程序:
./build.py --dir /home/toufic/Desktop/Pay4 --name "Lebanese PayCalc" --package org.demo.PayCalc --version 1.2.4 --icon /home/toufic/Desktop/Pay4/lp.png --presplash /home/toufic/Desktop/Pay4/onmyown.png --permission INTERNET --permission WRITE_EXTERNAL_STORAGE --window debug installd
# 或者,如果您使用的是 Buildozer,则可以运行以下命令:
buildozer -v android debug