3

最近我一直在学习如何使用 TensorFlow,并想在我的计算机上设置 Android 演示,看看它们是如何工作的。我按照此处提供的说明进行操作,唯一的区别是我通过 Android Studio 安装了 Android SDK,并通过 SDK Manager 安装了 Android NDK。直到$ bazel build //tensorflow/examples/android:tensorflow_demo,一切正常,但在那之后,我从终端收到了这个错误:

ERROR: no such package '@androidndk//': Could not read RELEASE.TXT in Android NDK: /home/me/.cache/bazel/_bazel_me/f3471be34d1e62bf21975aa777cedaa3/external/androidndk/ndk/RELEASE.TXT (No such file or directory).
ERROR: no such package '@androidndk//': Could not read RELEASE.TXT in Android NDK: /home/me/.cache/bazel/_bazel_me/f3471be34d1e62bf21975aa777cedaa3/external/androidndk/ndk/RELEASE.TXT (No such file or directory).

通过查看类似问题,我的理解是此错误是因为 RELEASE.TXT 文件未包含在最新版本的 Android NDK 中。此问题建议降级到包含 RELEASE.TXT 文件的先前版本的 NDK,并提供下载此类版本的链接。但是,我遵循的链接(https://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin)下载了一个 .bin 文件,这对我来说是不可用的。该帖子还建议注释掉 WORKSPACE 文件中的 NDK 条目,但我还没有尝试过,因为我不知道这是否会导致进一步的复杂化。

我尝试过的另一种方法是转到错误日志 ( /home/me/.cache/bazel/_bazel_me/f3471be34d1e62bf21975aa777cedaa3/external/androidndk/ndk) 指示的路径并创建一个空白的 RELEASE.TXT 文件,这没有任何区别。(我无法在我安装的 NDK 中创建一个,因为它是路径中的 .jar 文件的形式/home/me/android-studio/android-studio/plugins/android-ndk/lib,因此我能看到的唯一方法就是这条路径。)

就目前而言,我处于死胡同。是否有其他方法可以在不降级或注释掉 NDK 条目的情况下解决此问题?如果没有,我该如何安装以前版本的 Android NDK?

4

2 回答 2

4

我还在 TensorFlow 的官方 GitHub 存储库中将其作为问题#3175发布,并且已得到解决。可以在该线程中找到我为解决问题所遵循的步骤的逐个播放。这有点令人费解,所以我相信可以解决这样一个问题的步骤如下:

  1. 如果您在 git 克隆 TensorFlow 存储库时没有使用 --recursive 选项,请使用该选项重新克隆它。
  2. 降级到 Android NDK r11c(并确保相应地更新 WORKSPACE 文件)。Linux 版本的链接可以在 GitHub 线程中找到。
  3. 检查您的 Android SDK 和构建工具的版本。如果它们与 WORKSPACE 文件中写入的默认版本不同,请确保更改它。
  4. 您可能会遇到迄今为止尚未解决的 TensorFlow 问题。( #3374 ) 如果是这样,运行 ./configure 作为解决方法。

这应该允许 Bazel 构建成功进行。

于 2016-07-20T19:03:10.833 回答
0

您是否考虑过在不使用 Bazel 的情况下使用另一种方法为 Android 编译 TensorFlow?它在TensorFlow Makefile中有描述

于 2016-07-06T19:12:29.300 回答