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,

Другие вопросы по тегам