Buildozer编译简单的Android Kivy应用程序,但在打包时失败。

4
这是buildozer的输出结果:
buildozer android debug
# Check configuration tokens
# Ensure build layout
# Check configuration tokens
# Preparing build
# Check requirements for android
# Install platform
# Apache ANT found at /root/.buildozer/android/platform/apache-ant-1.8.4
# Android SDK found at /root/.buildozer/android/platform/android-sdk-21
# Android NDK found at /root/.buildozer/android/platform/android-ndk-r9c
# Android packages already installed.
# Check application requirements
# Compile platform
# Distribution compiled.
# Build the application #1
# Package the application
Traceback (most recent call last):
  File "/bin/buildozer", line 5, in <module>
    run()
  File "/usr/lib/python2.7/site-packages/buildozer/__init__.py", line 1215, in run
        Buildozer().run_command(sys.argv[1:])
  File "/usr/lib/python2.7/site-packages/buildozer/__init__.py", line 842, in run_command
    self.target.run_commands(args)
  File "/usr/lib/python2.7/site-packages/buildozer/target.py", line 85, in run_commands
    func(args)
  File "/usr/lib/python2.7/site-packages/buildozer/target.py", line 97, in cmd_debug
    self.buildozer.build()
  File "/usr/lib/python2.7/site-packages/buildozer/__init__.py", line 178, in build
    self.target.build_package()
  File "/usr/lib/python2.7/site-packages/buildozer/targets/android.py", line 397, in build_package
    version = self.buildozer.get_version()
  File "/usr/lib/python2.7/site-packages/buildozer/__init__.py", line 554, in     get_version
    ' (looking for `{1}`)'.format(fn, regex))
    Exception: Unable to find capture version in ./main.py
 (looking for `__version__ = '(.*)'`)

我试图编译我设计的一个简单的概率计算器。我无法发布代码,因为我打算尝试发布它。但是,我愿意回答任何问题,以便让它正常运作。

根据buildozer的输出,我认为它正在寻找main.py中我不知道需要的一行代码。不幸的是,我不知道那行代码应该是什么样子。然而,在buildozer.spec文件中,有一行代码是这样的:

version.regex = __version__ = '(.*)'
version.filename = %(source.dir)s/main.py

第一行看起来像输出中的一行,第二行引用了main.py文件。是否有人知道这些行的含义?我是buildozer的新手,所以不太确定该怎么做。感谢您提前的帮助。

2个回答

10

默认情况下,Buildozer会在您的main.py文件中查找形如__version__ = 'something'的行。这用于设置apk版本,是一个必填字段。

您可以将此行添加到main.py中,或注释版本检查并取消buildozer.spec下一行中备选版本方法的注释。这样,您就可以在buildozer.spec中设置版本字符串。


我应该使用什么“something”?我是Android开发的新手,所以不确定那意味着什么。像4.4,或者Kitkat或类似的东西? - PoisonRain
不,这是您的应用程序自己的版本。我还没有检查我们用于此的Android机制,但通常它会类似于“0.1”或“1.2”(或任何其他版本号),尽管我认为它接受任意字符串(即不仅限于数字,也不仅限于一个'.')。 - inclement
哦,好的。那很容易解决。谢谢!不过它又失败了。我想我缺少一些32位库(或者是另一个问题说的),但我用的是Fedora和yum,而不是Ubuntu或其他带有apt-get的系统,所以我不确定要安装哪些库。你知道应该安装哪些吗? - PoisonRain
这应该作为一个新问题提交。 - brousch

0
在你的 main.py 文件顶部添加 version = '0.1',这样你就可以打包你的应用程序而不会出现任何错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接