【发布时间】:2020-06-17 21:32:50
【问题描述】:
使用 Buildozer 为 Android 构建我的 kivy 应用程序后,运行步骤失败,因为它找不到 gettext 的消息文件。 我的 .spec 文件中有以下行:
source.include_exts = py,png,jpg,kv,atlas,mo,po,ini
.mo 文件位于 ./locales 下的当前应用程序目录中。
我还在 .spec 中包含以下行:
source.include_patterns = locales/*
最后,我在 main.py 中的代码包括:
trans = gettext.translation('base', localedir='locales', languages=[locale.getdefaultlocale()[0][0:2]])
languages 设置为 en 并且 en 目录位于 locales 文件夹中。
看起来好像是 Buildozer 正在拾取这些:
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/de'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/de/LC_MESSAGES'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/en'...
Listing '/Users/martinprater/PycharmProjects/kivy/.buildozer/android/app/locale/en/LC_MESSAGES'...
如何验证它们是否包含在应用程序中? 谢谢, 马丁
【问题讨论】:
-
添加一些日志以打印出设备上目录结构的详细信息,然后在 logcat 流中读取这些详细信息,看看它是否符合您的预期。
-
生成的
.apk实际上是一个zip文件。您可以unzip看看apk中包含的内容。 -
除了我的代码之外,只有我的图标在包中。我已经尝试通过注释掉包含目录中的所有内容:#source.include_exts = py,png,jpg,kv,atlas。不幸的是同样的效果。
标签: python android kivy gettext buildozer