Tensorflow android示例不会构建

时间:2016-06-24 20:59:59

标签: android sdk android-ndk tensorflow bazel

我正在尝试从tensorflow构建android示例,但仍然遇到恼人的构建错误。到目前为止我的步骤:

  • 为SDK安装了android studio。 (V24)
  • 下载了android NDK 10e(其他版本似乎不起作用)
  • aditionally安装了SDK构建工具23.0.1(v24似乎不起作用)
  • 使用初始模型
  • 将一个assets文件夹添加到android示例中
  • 编辑了WORKSPACE文件以指向NDK / SDK位置。

我尝试了几个版本的TF,但我一直收到错误。有什么想法吗?

错误:

C++ compilation of rule '@protobuf//:protobuf' failed: namespace-sandbox failed: error executing command /home/sander/.cache/bazel/_bazel_sander/577a8dcd97360f56540bc1f3f08ac240/tf-cat-face/_bin/namespace-sandbox ... (remaining 51 argument(s) skipped).
src/main/tools/namespace-sandbox.c:697: execvp(argv[0], argv): No such file or directory
Target //tensorflow/examples/android:tensorflow_demo failed to build
Use --verbose_failures to see the command lines of failed build steps.

2 个答案:

答案 0 :(得分:0)

Bazel为每个编译步骤创建一个沙箱,因此您的构建不会包含任何无意的内容。但是,我上次检查时,TF无法使用沙箱,因为它的构建并不是完全密封的。您遇到的错误是沙盒错误(它无法找到应该在沙箱中的内容),因此您可以使用--genrule_strategy=standalone和{{1}关闭沙箱} flags,例如,

--spawn_strategy=standalone

答案 1 :(得分:0)

如果您正在寻找构建TensorFlow Android演示应用的快速方法,请查看我写的this tutorial

文章解释更多,但我创建了this Docker image,其中包含您需要的所有依赖项,以便您可以拉动Docker镜像并构建Android演示应用程序。

我得到的一个问题是我需要传递--local_resources选项以确保构建在Docker内成功(否则它们会耗尽内存,即使在我的3.1 GHz,16GB RAM Macbook Pro上):

bazel build -c opt --local_resources 4096,4.0,1.0 -j 1 //tensorflow/examples/android:tensorflow_demo