Facebook Buck: BUILD FAILED: Родные платформы не обнаружены. Возможно, Android NDK настроен неправильно
Я пытаюсь создать приложение для Android, используя систему сборки Facebook, но получаю Build Failed
ошибка.
Я получаю ту же ошибку как на MAC, так и на WINDOWS
файл buckconfig
[cache]
mode = dir
[cxx]
default_platform = iphonesimulator-x86_64
cflags = -g -std=c11
cxxflags = -g -std=c++14
# Many ARC APIs don't compile with separate preprocess and compile.
combined_preprocess_and_compile = true
[alias]
demo_app_android = //android:demo-app
demo_app_ios = //ios:BuckDemoApp
[apple]
xctool_zip_target = //third-party/ios/xctool:xctool-minimal-zip
[ndk]
ndk_version = 16.1.4479499
app_platform = android-26
[android]
build_tools_version = 26.0.2
target = Google Inc.:Google APIs:26
[java]
src_roots = /android/java/
source_level = 7
target_level = 7
[project]
default_android_manifest = //android/AndroidManifest.xml
ignore = .buckd, \
.hg, \
.git, \
.idea, \
buck-cache, \
buck-out, \
Переменные среды:
$ env | grep ANDROID_
ANDROID_HOME=<path>/Android/sdk
ANDROID_NDK_REPOSITORY=<path>/Android/sdk/ndk-bundle
ANDROID_SDK=<path>/Library/Android/sdk
Трассировка стека ошибок:
Building: finished in 0.0 sec
Total time: 0.0 sec
BUILD FAILED: No native platforms detected. Probably Android NDK is not configured properly.
Я не понимаю то, что мне не хватает. Ценю твою помощь.
Спасибо
2 ответа
У меня была такая же ошибка при попытке создать образец приложения для Android. Я попробовал несколько вещей, чтобы четко понять поведение настроек.buckconfig и переменных среды.
Установить ndk_path
Вы можете установить путь ndk напрямую. Я установил эту переменную вместо установки ndk_version(например, 'r10e'). Имейте в виду, что
Переменные среды ANDROID_NDK и NDK_HOME заменяют параметр buckconfig.
Создать папку репо (рекомендуется)
Загрузите пакет ndk и разархивируйте его в папку, которая служит папкой репозитория, и установите для него значение ANDROID_NDK_REPOSITORY env var. Таким образом, путь может быть использован для получения правильной версии ndk. В этом случае единственное, что вам нужно сделать, это установить версию пакета NDK, и бак автоматически получит для вас нужную версию.
В настоящее время есть ошибка с Buck с Java9.
Просто чтобы добавить больше. Если вы используете java9, перейдите на java8, так как бак использует sun/misc/BASE64Encoder
который удален в java9.
Чтобы сохранить версии java8 и java9 в Mac. Я реализовал ниже командные строки в .bash_profile
,
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
#default java8
export JAVA_HOME=$JAVA_8_HOME
Попробуйте старую версию NDK (15 или старше) и убедитесь, что /Android/sdk/ndk-bundle
содержит каталог с этой версией, поэтому он выглядит /Android/sdk/ndk-bundle/android-ndk-r15
,