首先是把tensorflow克隆到本地一份。

  1. git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git

既然是谷歌官方要求的,最好把--recurse-submodules加上,文档说可以避免一些数据结构序列化时的编译问题。

这是android demo的github主页。

准备编译

1.安装bazel

bazel是谷歌自己的构建工具。tensorflow只能部分支持cmake或者gradle,而bazeltensorflow工程的主要构建工具。

点这里下载Bazel。

Mac和Linux用户根据文档进行安装。Windows用户,按照官方建议到下面的链接下载demo的二apk文件,目前bazel在windows平台还处于试验阶段。

Windows用户点这里直接下载apk

bazel安装成功与否,用bazel version检查版本即可。

2.下载NDK

点这里下载最新版本NDK。

最好下载r12b版本的,最新的r13b可能与bazel有兼容问题。

下载完成后解压到自定义目录,然后在~/.bash_profilelinux~/.bashrc)下添加环境变量。环境变量的添加过程大家百度一下吧,不是这里的重点。

3.下载>=23 Android SDK

Tensorflow Android Demo必须在大于等于23API环境中编译。可以打开Android Studio中的SDK Manager来安装最新的SDK

4. 编辑Tensorflow根目录下的WORKSPACE文件

回到tensorflow根目录,(当前在android目录就往上两级)。打开WORKSPACE文件。

在文件开头部分找到

  1. # Uncomment and update the paths in these entries to build the Android demo.
  2. #android_sdk_repository(
  3. # name = "androidsdk",
  4. # api_level = ,
  5. # # Ensure that you have the build_tools_version below installed in the
  6. # # SDK manager as it updates periodically.
  7. # build_tools_version = "25.0.2",
  8. # # Replace with path to Android SDK on your system
  9. # path = "/path/to/your/sdk",
  10. #)
  11.  
  12. # Android NDK r12b is recommended (higher may cause issues with Bazel)
  13. #android_ndk_repository(
  14. # name="androidndk",
  15. # path="/path/to/your/ndk",
  16. # # This needs to be or higher to compile TensorFlow.
  17. # # Note that the NDK version is not the API level.
  18. # api_level=)

这两部分定义了SDKNDK的路径,把/path/to/your的部分改成系统相应的路径。然后将每一行前的注释去掉。如下:

  1. # Uncomment and update the paths in these entries to build the Android demo.
  2. android_sdk_repository(
  3. name = "androidsdk",
  4. api_level = ,
  5. # Ensure that you have the build_tools_version below installed in the
  6. # SDK manager as it updates periodically.
  7. build_tools_version = "25.0.2",
  8. # Replace with path to Android SDK on your system
  9. path = "/Users/XXX/Library/Android/sdk",
  10. )
  11. #
  12. # Android NDK r12b is recommended (higher may cause issues with Bazel)
  13. android_ndk_repository(
  14. name="androidndk",
  15. path="/usr/local/lib/android-ndk-r12b",
  16. # This needs to be or higher to compile TensorFlow.
  17. # Note that the NDK version is not the API level.
  18. api_level=)

开始编译

tansorflow根目录执行,

  1. bazel build -c opt //tensorflow/examples/android:tensorflow_demo

进行编译,变异过程如下:

一切顺利的话,编译成功,如下图:

安装APK DEMO

变异成功之后bazel会在bazel-bin目录下面生成apk文件。用数据线连上手机,执行

  1. adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk

即可安装到手机。

TensorFlow编译androiddemo的更多相关文章

  1. Bazel 编译工具; tensorflow 编译

    什么是bazel https://docs.bazel.build/versions/master/bazel-overview.html 使用 bazel 构建 c++ 工程 https://git ...

  2. tensorflow编译成功!

    使用bazel编译tensorflow项目的core包成功!找了个简单的target可视化,留作纪念,命令如下: bazel query --noimplicit_deps --nohost_deps ...

  3. 在Windows*上编译Tensorflow教程

    背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...

  4. tensorflow安装

    Ubuntu安装tensorflow先安装python-dev,再安装tensorflow就好了$ sudo apt-get install python-dev$ pip install https ...

  5. Android 项目使用TensorFlow

    Android 项目使用TensorFlow 首先需要搭建TensorFlow编译环境 参考:(http://www.cnblogs.com/dyufei/p/8027764.html) Tensor ...

  6. Jetson TX2安装tensorflow(原创)

    Jetson TX2安装tensorflow 大致分为两步: 一.划分虚拟内存 原因:Jetson TX2自带8G内存这个内存空间在安装tensorflow编译过程中会出现内存溢出引发的安装进程奔溃 ...

  7. tensorflow项目构建流程

    https://blog.csdn.net/hjimce/article/details/51899683 一.构建路线 个人感觉对于任何一个深度学习库,如mxnet.tensorflow.thean ...

  8. 在Ubuntu 18.04上安装Tensorflow

    我们将经历几个阶段,安装cuda-9.0,cudnn和tensorflow cpu以及tensorflow gpu版本.最后我们将用cuda-9.0安装pytorch.在MARVEl电影中黑寡妇的“我 ...

  9. 在Ubuntu 16.04上使用bazel交叉编译tensorflow

    鸽了这么久,正式开工 Author: carbon email: ecras_y@163.com 参考资料: https://github.com/tensorflow/tensorflow http ...

随机推荐

  1. 【随机化】【并查集】Gym - 100851J - Jump

    题意:交互题,有一个长度为n(偶数)的二进制串,你需要猜不超过n+500次猜到它.如果你猜的串与原串相同的位数为n,那么会返回n,如果为n/2,那么会返回n/2,否则都会返回零. 先random,直到 ...

  2. BZOJ 3571 画框 KM算法 最小乘积最大权匹配

    题意 有n个画框和n幅画.若第i幅画和第j个画框配对,则有平凡度Aij和违和度Bij,一种配对方案的总体不和谐度为∑Aij*∑Bij.求通过搭配能得到的最小不和谐度是多少. n <= 70. 分 ...

  3. 【原】Project configuration is not up-to-date with pom.xml

    导入一个Maven项目之后发现有一个如下的错误: Project configuration is not up-to-date with pom.xml. Run project configura ...

  4. PEM DAC note

    开发指南V1.0库函数版本,PWM DAC实验 350页 STM32 的定时器最快的计数频率是72Mhz,8 为分辨率的时候,PWM 频率为72M/256=281.25Khz.如果是1阶RC滤波,则要 ...

  5. Unity 面试题

    一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足. 二:Unity3d中 ...

  6. 【javaw.exe 两个】启动了两个javaw.exe 相关

    大家开发 肯定见过 两条并存的现象吧! 关闭方式1: 在任务管理器中,挑选 内存占用较小的 那个  关闭即可!! 关闭方式2: 1.查找对应的端口占用的进程:netstat  -aon|findstr ...

  7. pytest文档4-测试用例setup和teardown

    前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...

  8. 利用tca时间聚簇分析方法分析fmri数据

    一.利用ica进行fmri数据分解时,在得到相互独立的成分后,这些成分的后续处理,其实是有很多文章可以做的.比如,对这些成分进行排序和选择.如果能够提出某种方法,能够自动地制造特征,并将这些特征与分解 ...

  9. 代码规范审查 - Sonar集成Visual Studio

    开发人员可以使用Sonar的集成插件在开发阶段进行实时代码质量审核,在代码编写阶段分析出当前代码的质量及规范漏洞,并给出合理的修改建议.编写高质量.高维护性的代码变得更简单! VS集成Sonar之前 ...

  10. cas忽略地址配置

    项目中需要忽略部分地址不需要cas验证,网上资料不多,结合cas源码,找到了配置方法:web.xml中增加ignorePattern配置.实际上是通过正则表达式来匹配. <filter> ...