Facebook Buck:构建失败:未检测到本机平台。可能Android NDK配置不正确

Facebook Buck:构建失败:未检测到本机平台。可能Android NDK配置不正确,android,facebook,build,android-ndk,buck,Android,Facebook,Build,Android Ndk,Buck,我正在尝试使用facebook的buck build系统来构建Android应用程序,但是我得到了构建失败的错误 我在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 wi

我正在尝试使用facebook的buck build系统来构建Android应用程序,但是我得到了
构建失败的
错误

我在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.
我没有得到我所缺少的东西。谢谢你的帮助


谢谢

我在尝试构建示例Android应用程序时遇到了相同的错误。我尝试了几种方法来清楚地理解.buckconfig设置和环境变量的行为

设置ndk_路径 您可以直接设置ndk路径。我设置了这个变量,而不是设置ndk_版本(如“r10e”),请记住

环境变量ANDROID_NDK和NDK_HOME都取代了 buckconfig设置

创建一个回购文件夹(推荐) 下载ndk bundle并将其解压缩到一个用作存储库文件夹的文件夹中,然后将其设置为ANDROID_ndk_repository env var。这样就可以使用该路径获得正确的ndk版本。在这种情况下,您只需设置NDK bundle的版本,buck就会自动为您获得正确的版本

目前,Buck与Java9之间存在错误。 只是补充一下。 如果您使用的是java9,那么降级到java8,因为buck使用的
sun/misc/BASE64Encoder
在java9中被删除

在mac中保留java8和java9的版本。我在
.bash\u 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

一个常见错误是将NDK放在一个完整路径包含空格字符的目录中。