【问题标题】:Buildozer on kivy-example fails to build apkkivy-example 上的 Buildozer 无法构建 apk
【发布时间】:2017-04-18 16:04:47
【问题描述】:

我已经安装了 kivy(在 debian jessie / python 2.7 上),示例运行良好,

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y build-essential ccache git zlib1g-dev python2.7 python2.7-dev 
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 
sudo pip install colorama appdirs sh jinja2 six
sudo pip install --upgrade colorama
sudo apt-get install pkg-config autoconf automake libtool
sudo apt-get install software-properties-common
sudo apt-get install cython  #installs 0.21.1
sudo add-apt-repository ppa:kivy-team/kivy
sudo apt-get update
sudo apt-get install python-kivy python-kivy-examples  #installs 1.8.0
sudo chmod -R 777 /usr/share/kivi-examples/  #install made it Read-Only Root
sudo pip install --upgrade buildozer  #installs 0.32
sudo easy_install buildozer  #just in case?
sudo pip install python-for-android  #0.4?
java -version #reports 1.8.0_121  

但是当我尝试构建任何 kivy 示例时,它会出现错误。我在 .spec 文件中设置了 log_level = 2,但我在控制台输出中没有看到任何暗示可能是什么问题的东西

/usr/share/kivy-examples/demo/touchtracer$ buildozer init
...
/usr/share/kivy-examples/demo/touchtracer$ buildozer -v android debug
/usr/share/kivy-examples/demo/touchtracer$ buildozer -v android_new debug
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/android/utils/ILogger
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at     sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at     sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.android.utils.ILogger
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
# Command failed: /home/guest/.buildozer/android/platform/android-sdk-20/tools/android list sdk -u -e
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error

另外,在我尝试构建的某个时间点,每次我运行 buildozer 时它都会下载 android sdk,但现在停止了.. 或者至少它不再达到那个点了。

升级到 python 3 然后安装 python3-kivy 是否可以解决这个问题?我注意到我当前的安装没有获取最新的(kivy 1.9.1 / android sdk 21)

[更新 #1] 我安装了较新版本的 buildozer (.33dev)、cython (25.2) 和 kivy (1.9.2.dev0)

cd ~
git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo python setup.py install
cd ..
sudo pip install Cython==0.25.2  #kivy 1.9.2.dev0 required Cython >= 0.23
git clone https://github.com/kivy/kivy
cd kivy
sudo python setup.py install

并更新了 .spec 文件:

requirements = python2,kivy==master
android.sdk = 24

但仍然没有运气。我能找到的唯一另一件事是将java8降级到java7。 buildoze 不适用于 8 吗? Buildozer command failed

[更新 #2] 我卸载了 Java8 (https://askubuntu.com/questions/84483/how-to-completely-uninstall-java) 并安装了 Java 1.7.0_80,但我得到了同样的错误

sudo apt-get install oracle-java7-installer
java -version
sudo apt-get install oracle-java7-set-default
sudo update-alternatives --config java

【问题讨论】:

  • 改用buildozer android_new debug。它可能至少会给出一个更好的错误。
  • 谢谢,但输出看起来一样...奇怪的是 --verbose 什么都不是!我想保留 java8,但这是否可能只使用 java7 才有效?

标签: android python kivy buildozer


【解决方案1】:

BuilDozer 目前已过时。忘了它。我在这里被问到了:Buildozer gives error upon building Pong app of Kivy framework for android publishing

试试Python for AndroidQPython

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 2014-05-26
    • 1970-01-01
    • 2020-08-13
    • 2019-12-12
    • 2015-12-01
    • 2020-12-22
    相关资源
    最近更新 更多