Конструкция приложения генерирует ошибку в toolchain.py по нераспознанному аргументу - PullRequest
0 голосов
/ 21 января 2019

Версия

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

Buildozer не приступает к созданию приложения из-за ошибки в toolchain.py и аргументах --ndk-api 9.

Я перешел на все версии 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 голосов
/ 18 февраля 2019

для других людей, у которых может быть такая же проблема, я поместил здесь все, что я сделал, чтобы устранить ошибку.Хорошо, во-первых, это была ошибка, из-за которой файл 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.py и android_new.py так же, как и раньше.Теперь buildozer выполняет правильное обновление p4a и ndk и работает правильно.

...