TensorFlow Android demo 调试记录 ( macOS )

特别注意:全程请保持网络能正常访问 google

GITHUB:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
  1. 准备  android 5.1  版本以上的 手机 低版本的不支持。
  2. 下载 tensorflow 源码
    git clone --recurse-submodules https://github.com/tensorflow/tensorflow
    git clone git@github.com:tensorflow/tensorflow.git
  3. 用 android studio 打开
  4. 试着 run了一下 出现错误
    Error:Execution failed for task ':buildNativeBazel'.
    
    > A problem occurred starting process 'command '/usr/local/bin/bazel''
    1. 需要安装  bazel  ( 我在 mac 上开发的。 ubuntu 或者window 参考  https://docs.bazel.build/versions/master/install-os-x.html
      brew cask install caskroom/versions/java8
      brew install bazel
    2. 需要安装 NDK
      android studio : file -> project structure -> SDK location    最后的  Android NDK location 如果为空 ,点下面的 download  下载,并解压。将路径填到上面的框里。

      https://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip
  5. 到tensorflow 工作目录 编译(需要下载包)
  6. bazel build -c opt //tensorflow/examples/android:tensorflow_demo
  7. 出错误  ,原因是 tensorflow 工作目录里没有 andorid sdk
  8. This build requires an Android SDK. Please add the android_sdk_repository rule to your WORKSPACE.
  9. clang: error: unknown argument: '-m<platform_for_version_min>-version-min=11.1'

    打开 tensorflow 根目录下的 WORKSPACE 编辑  sdk 和 ndk

  10. 又报错误
    C++ compilation of rule '@protobuf_archive//:protobuf' failed (Exit 1).
    
    fatal error: 'stdlib.h' file not found
    
    #include <stdlib.h>

    原因是 git 时没有加   –recurse-submodules 参数  。用于获取 TesorFlow 依赖的 protobuf 库

  11. 依然还有错误,一堆 .h 文件找不到。查了些资料,说 NDK不能超过 r12b ,重新下载个 r12b , 替换掉默认的。( tensorflow 文档推荐的是 14b,我没有试应该也可以。我之前下的是 16)
    https://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip
  12. OK成功
    Target //tensorflow/examples/android:tensorflow_demo up-to-date:
    
     bazel-bin/tensorflow/examples/android/tensorflow_demo_deploy.jar
    
     bazel-bin/tensorflow/examples/android/tensorflow_demo_unsigned.apk
    
     bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
    
    INFO: Elapsed time: 861.504s, Critical Path: 99.12s
  13. 编译完的 apk 在一个非常诡异的位置
    //tensorflow/bazel-out/darwin_x86_64-opt/bin/tensorflow/examples/android/tensorflow_demo.apk
    adb install -r  ./bazel-out/darwin_x86_64-opt/bin/tensorflow/examples/android/tensorflow_demo.apk

    mac安装 adb

    brew cask install android-platform-tools

     

  14. 可能出现如下错误
  15. Gradle sync failed: Cause: error in opening zip file
     Consult IDE log for more details (Help | Show Log) (451ms)

     

    将 gradle-wrapper.properties  中

    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

    替换成

    distributionUrl=http\://services.gradle.org/distributions/gradle-4.1-all.zip

    出错误Xcode version must be specified to use an Apple CROSSTOOL

bazel clean --expunge

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

sudo xcodebuild -license

  1. 附,解决最后问题的一篇文章,顺带致谢。
    http://blog.csdn.net/wojiaopanpan/article/details/77488056

Lite 版 移步 

《TensorFlow Android demo 调试记录 ( macOS )》上有2条评论

  1. 站住你好,我是个新手最近想做tf的安卓部署,想请教下,bazel的版本有要求吗,我brew install bazel的下载速度实在令人发指,无奈弄了个之前的版本;另外我用bazel 0.7.0版本做build,报错如下:C++ compilation of rule ‘//tensorflow/examples/android:libtensorflow_demo.so’ failed (Exit 1).
    src/main/tools/process-wrapper-legacy.cc:56: “execvp(/bin/false, …)”: No such file or directory 还请求教是什么情况呀

发表评论

电子邮件地址不会被公开。