应用程序构造通过无法识别的参数在toolchain.py中生成错误

时间:2019-01-21 03:36:11

标签: android python kivy buildozer

版本

Python: 2.7
OS: Linux Lite (Ubuntu)
Kivy: 1.10.1
Cython: 0.22

由于工具链中的错误和参数--ndk-api 9,Buildozer不会继续创建App。

我将所有cython版本从0.21切换到了最新版本,但是没有任何变化。我进入android sdk文件夹并进行了几次更新,但是问题仍然存在。

错误是:'toolchain.py:错误:无法识别的参数:--ndk-api 9'

日志的最后一部分:

usage: toolchain.py [-h] [--private PRIVATE] --package PACKAGE --name NAME
                    [--numeric-version NUMERIC_VERSION] --version VERSION
                    [--orientation ORIENTATION] [--launcher] [--icon ICON]
                    [--permission PERMISSIONS [PERMISSIONS ...]]
                    [--meta-data META_DATA] [--presplash PRESPLASH]
                    [--presplash-color PRESPLASH_COLOR] [--wakelock]
                    [--window] [--blacklist BLACKLIST] [--whitelist WHITELIST]
                    [--add-jar ADD_JAR] [--add-aar ADD_AAR] [--depend DEPENDS]
                    [--sdk SDK_VERSION] [--minsdk MIN_SDK_VERSION]
                    [--intent-filters INTENT_FILTERS] [--service SERVICES]
                    [--add-source EXTRA_SOURCE_DIRS]
                    [--try-system-python-compile] [--no-compile-pyo] [--sign]
toolchain.py: error: unrecognized arguments: --ndk-api 9
# Command failed: /usr/bin/python -m pythonforandroid.toolchain apk --debug --bootstrap=sdl2 --dist_name myapp --name 'My Application' --version 0.1 --package org.test.myapp --android_api 19 --minsdk 9 --ndk-api 9 --private /home/dev/Modelos/testea/.buildozer/android/app --orientation portrait --window --copy-libs --arch armeabi-v7a --color=always --storage-dir="/home/dev/Modelos/testea/.buildozer/android/platform/build"
# 
# 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

有人知道这个错误的原因吗?

1 个答案:

答案 0 :(得分:0)

对于其他可能遇到相同问题的人,我将为解决该错误所做的一切都放在这里。 好的,首先,这是一个错误,其中buildozer.spec文件由于某种原因未能正确更新p4a文件,并且所用ndk版本也存在错误。 首先,我下载了NDK的r17c版本。我去了/home/dev/.buildozer/android/platform/路径并解压缩了下载的文件。 然后在路径/home/dev/buildozer/buildozer/default.spec中,我更改了p4a中用于主服务器的分支,它看起来像这样: # p4a.branch = master

我还更改了以下几行:

# (int) Android API to use
# android.api = 21

# (int) Minimum API required. You will need to set the android.ndk.api to be as low as this value.
# android.minapi = 21

# (int) Android SDK version to use
# android.sdk = 20

# (str) Android NDK version to use
# android.ndk = r17c

# (int) Android NDK API to use (optional). This is the minimum API your app will support.
# android.ndk_api = 19

嗯,最初并没有改变构造的方式,而是继续犯错。所以我走了 / home / dev / buildozer / buildozer / targets / 并在文件android.py中更改了第17、18和20行:

ANDROID_API = '21' #line 17
ANDROID_MINAPI = '21' #line 18
ANDROID_SDK_VERSION = '20'
ANDROID_NDK_VERSION = '17c' #line 20
APACHE_ANT_VERSION = '1.9.4'

在同一文件中的TargetAndroid类中,我更改了第46行(旧名称为python-for-android-new-version)和第47行,该类如下所示:

class TargetAndroid (Target):
    targetname = 'android_old'
    p4a_directory = "python-for-android" #line 46
    p4a_branch = 'master' #line 47
    p4a_apk_cmd = "python build.py"

好吧,在同一路径中有一个名为android_new.py的文件,在TargetAndroidNew类中,我更改了第16和17行,该类如下所示:

class TargetAndroidNew (TargetAndroid):
    targetname = 'android'
    p4a_branch = "master" #line 16
    p4a_directory = "python-for-android" #line 17
    p4a_apk_cmd = "apk --debug --bootstrap ="
    extra_p4a_args = ''

好的,这应该已经可以了,但是由于某种原因,还有另一个路径具有几乎相同的文件,所以我进行了相同的更改。没有路 /home/dev/buildozer/build/lib.linux-x86_64-2.7/buildozer/ 我像以前一样更改了default.spec文件。而在道路上 /home/dev/buildozer/build/lib.linux-x86_64-2.7/buildozer/targets/ 我以与以前相同的方式更改了文件android.pyandroid_new.py。 现在,buildozer可以正确地更新p4a和ndk并正常工作。