Bitbucket Pipelines: в папке NDK toolchains не обнаружены цепочки инструментов для ABI с префиксом: aarch64-linux-android

Я совершенно не знаком с CI с Bitbucket Pipelines и в настоящее время настраивал конвейер с помощью эта статья. Мои сборки не работают из-за этой ошибки

«В папке NDK toolchains для ABI с префиксом: aarch64-linux-android не обнаружены наборы инструментов»

Может ли кто-нибудь помочь мне это исправить?


person Omkar Amberkar    schedule 19.05.2017    source источник
comment
Если вы используете докер Uber без изменений, тогда у тебя там NDK r12. Может быть, ваш проект опирается на что-то другое.   -  person Alex Cohn    schedule 22.05.2017
comment
попробуйте использовать следующий метод stackoverflow.com/a/54019946/7831470   -  person Sagar Giri    schedule 03.01.2019


Ответы (3)


Сегодня я столкнулся с той же проблемой, что и вы. Я также следил за упомянутым вами сообщением в блоге. Что бы ни. Рад сообщить вам: я исправил и нашел "решение"! ????

Самое смешное: решение настолько глупое, насколько простое. Единственное, что вам нужно сделать, это unset (или удалить) переменную среды (или каталог) NDK.

Магическая линия:

- unset ANDROID_NDK_HOME

Это означает, что мой последний bitbucket-pipelines.yml выглядит так:

image: uber/android-build-environment:latest

pipelines:
  default:
    - step:
        script:
          - unset ANDROID_NDK_HOME
          - ./ci/accept_android_license.sh
          - ./gradlew :app:testDebugUnitTest

Почему это устраняет проблему?

Если быть честным. Не знаю ????. Но я обнаружил, что ubers android-build-environment установить а> для тебя.

Я нашел несколько ответов - например, здесь - чтобы снова установить NDK отдельно. Но я подумал о следующем: какого черта я должен устанавливать / обновлять NDK, если мой проект его не использует? Поэтому я попытался удалить папку NDK (которая согласно Dockerfile находится по адресу /usr/local/android-ndk) и все работает ????.

Почему тогда unsetting?

Вы не можете удалить android-ndk каталог, потому что у вас нет на это разрешения. Но вы можете удалить из него содержимое. Вот почему это сработало с rm -rf /usr/local/android-ndk. Но затем - с настройкой ANDROID_NDK_HOME, но без какого-либо содержимого вы получили сообщение об ошибке (при сборке):

./gradlew :app:testDebugUnitTest

NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /usr/local/android-ndk.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

unset переменная среды также исправляет это предупреждение.

Важно:

Очевидно, это не лучшее решение. Если ваше приложение использует NDK, это решение не поможет. Удаление некоторых переменных среды «из образа Docker» в CI скрипте - тоже не лучшее решение. Возможно, позже образу понадобится переменная (не знаю, возможно ли это в Docker ... но вы понимаете, о чем я ????). Но это "временно" решит проблему, и, поскольку android-build-environment не обслуживается (не обновляется уже год), я бы не стал прикладывать много усилий для исправления образа ...

Примечание. Ссылка на uber:android-build-environment страницу GitHub относится к одной (в настоящее время последней) фиксации. Если кто-то прочитает это, в будущем ссылка все еще активна и верна, но, возможно, ветка master изменилась.

person StefMa    schedule 22.07.2017

Вам необходимо загрузить android ndk и установить автономную цепочку инструментов, подобную этой

$NDK/build/tools/make_standalone_toolchain.py \ --arch arm --api 21 --install-dir /tmp/my-android-toolchain

Иногда вам нужно создать переменную окружения для цепочки инструментов.

person Armen Avetisyan    schedule 22.05.2017

person    schedule
comment
Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причины вашего предложения кода. Также постарайтесь не загромождать свой код пояснительными комментариями, это снижает удобочитаемость как кода, так и пояснений! - person Filnor; 28.03.2018