使用 bazel 支持在 android 上构建 tensorflow 时出错

error while building tensorflow on android, using bazel support

正如下面 link 中提到的 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-studio

"At this point you can add the tensorflow/examples/android directory as a new Android Studio project."

我所做的一切

  1. 使用 "git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git"
  2. 克隆了 git 存储库
  3. 使用 "bazel build -c opt //tensorflow/examples/android:tensorflow_demo"
  4. 构建了一个 APK
  5. 在“/.../.../tensorflow-master/bazel-bin/tensorflow/examples/android”中找到了 APK
  6. 如上所述,我尝试添加“tensorflow/examples/android” 目录作为新 Android Studio 项目
  7. 上面link中提到的"look at build.gradle and make sure that the path to Bazel matches that of your system."我改成了"def bazelLocation = '/usr/bin/bazel'"

错误

我正在尝试从 Android Studio 构建 APK,但发现了这个错误

错误:任务“:buildExternalAssets”执行失败。 进程 'command '/usr/bin/bazel'' 以非零退出值 1

结束

Gradle 构建消息

正在执行任务:[:assembleDebug]

按需配置是一项孵化功能。

:preBuild 最新 :preDebugBuild 最新 :检查调试清单 :prepareDebugDependencies :compileDebugAidl 最新 :compileDebugRenderscript 最新 :generateDebugBuildConfig 最新 :generateDebugResValues 最新 :generateDebugResources 最新 :mergeDebugResources 最新 :processDebugManifest 最新 :processDebugResources 最新 :generateDebugSources 最新 :incrementalDebugJavaCompilationSafeguard 最新 :java预编译调试 :compileDebugJavaWithJavac 最新 :compileDebugNdk 最新 :compileDebugSources 最新 :buildExternalAssets

无法在“/usr/local/java/jdk1.8.0_101/bin/java”找到 java。

失败

失败:构建失败,出现异常。

任务“:buildExternalAssets”执行失败。

进程 'command '/usr/bin/bazel'' 以非零退出值 1 结束

运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。

构建失败

总时间:11.433 秒

感谢@cricket_007 回复并澄清了我关于 jdk 安装的概念

解决上述问题

  1. 打开 "build.gradle" 在 [/.../.../.../tensorflow-master/tensorflow/examples/android/build.gradle], 检查

    "def externalModelData = '../../../bazel-tensorflow-master/外部'"

  2. 验证 def externalModelData 是否指向正确的文件夹名称,最初它是 '../../../ bazel-tensorflow/外部'

  3. 我不得不将其更改为 bazel-tensorflow-master,这些是 bazel 生成的文件夹,在你从 [=56 编译 tensorflow 源代码后=] 在命令行上,使用 bazel、Android SDK 和 Android NDK 工具

  4. 还要确保您的 Jdk 安装是完美的。