Buildozer在为Android构建Kivy应用程序时抱怨XML模式 Python:3.6.8

Buildozer在为Android构建Kivy应用程序时抱怨XML模式 Python:3.6.8,python,pip,kivy,buildozer,Python,Pip,Kivy,Buildozer,与pip3一起安装: 基维:1.10.1 PyCharm:2019.2.4 Buildozer:0.39 我在做以下事情之后: $ buildozer -v android debug PyCharm在终端上显示这一点,抱怨某些xml架构问题: # Run '/home/madtyn/.buildozer/android/platform/android-sdk/tools/bin/sdkmanager tools platform-tools' # Cwd /home/madtyn/.b

与pip3一起安装:

  • 基维:1.10.1
  • PyCharm:2019.2.4
  • Buildozer:0.39
我在做以下事情之后:

$ buildozer -v android debug
PyCharm在终端上显示这一点,抱怨某些xml架构问题:

# Run '/home/madtyn/.buildozer/android/platform/android-sdk/tools/bin/sdkmanager tools platform-tools'
# Cwd /home/madtyn/.buildozer/android/platform/android-sdk
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
    at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more
# Command failed: /home/madtyn/.buildozer/android/platform/android-sdk/tools/bin/sdkmanager tools platform-tools
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2
#运行'/home/madtyn/.buildozer/android/platform/android sdk/tools/bin/sdkmanager-tools-platform-tools'
#Cwd/home/madtyn/.buildozer/android/platform/android sdk
线程“main”java.lang.NoClassDefFoundError中出现异常:javax/xml/bind/annotation/XmlSchema
位于com.android.repository.api.SchemaModule$SchemaModule版本。(SchemaModule.java:156)
位于com.android.repository.api.SchemaModule(SchemaModule.java:75)
位于com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81)
位于com.android.sdklib.tool.sdkmanager.sdkmanagerli.main(sdkmanagerli.java:73)
位于com.android.sdklib.tool.sdkmanager.sdkmanagerli.main(sdkmanagerli.java:48)
原因:java.lang.ClassNotFoundException:javax.xml.bind.annotation.XmlSchema
位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 还有5个
#命令失败:/home/madtyn/.buildozer/android/platform/android sdk/tools/bin/sdkmanager tools平台工具
# 
#Buildozer未能执行最后一个命令
#此错误可能隐藏在此错误上方的日志中
#请先阅读完整日志,然后再进行搜索
#向buildozer本身提出问题。
#如果出现错误报告,请添加日志级别为2的完整日志

我应该说我尝试过卸载JDK1.11、JDK1.8和JDK13(Zulu)。

考虑到我尝试了几件事,最后都成功了,但我不知道到底哪一步成功了,我一步一步地描述了我所做的一切

  • 在为使用buildozer打包而创建的文件夹中,我删除了此文件夹

    $ rm -rf .buildozer/
    
  • 卸载了我的JDK,它是zulu JDK13

  • 根据某人的建议,我安装了一些依赖项。请注意,这里有一个JDK:

    $ sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake
    
  • 此时此刻,我再次尝试:

    $  buildozer -v android debug
    
  • 我犯了一个不同的错误。在这里,您可以看到一对屏幕截图:

  • 更新/安装了最现代的cython和kivy:

    $ pip3 install -U cython==0.29.6
    # I think pip3 install --upgrade cython would have been just fine
    $ pip3 install --upgrade kivy
    
  • 我安装了另一个依赖项,这可能是必需的,也可能不是必需的:

    $ sudo apt install aidl
    
  • 最后,我成功地启动了最后一个命令,该命令耗时约20分钟:

    $ buildozer -v android debug
    
  • 这就创建了apk。看起来cython和kivy版本在某些情况下有兼容版本,所以您应该真正注意这一点。拥有最新的不会有任何伤害