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

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文件。

在文件开头部分找到

# Uncomment and update the paths in these entries to build the Android demo.
#android_sdk_repository(
# name = "androidsdk",
# api_level = ,
# # Ensure that you have the build_tools_version below installed in the
# # SDK manager as it updates periodically.
# build_tools_version = "25.0.2",
# # Replace with path to Android SDK on your system
# path = "/path/to/your/sdk",
#) # Android NDK r12b is recommended (higher may cause issues with Bazel)
#android_ndk_repository(
# name="androidndk",
# path="/path/to/your/ndk",
# # This needs to be or higher to compile TensorFlow.
# # Note that the NDK version is not the API level.
# api_level=)

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

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

开始编译

tansorflow根目录执行,

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

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

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

安装APK DEMO

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

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. Block修改变量容易被忽略的方法

    C语言里面的 静态变量 静态全局变量 全局变量 其中静态变量和普通变量的截取模式是一样的,只是因为他赋值不被丢弃,所以能修改成功 code: #import <Foundation/Founda ...

  2. Java编程思想学习(五)----第5章:初始化与清理

    随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...

  3. md5加密,md5加盐加密和解密

    package com.java.test; import java.security.MessageDigest; import java.security.SecureRandom; import ...

  4. js实现大转盘抽奖游戏实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. Struts2 include(包含)多个配置文件

    Struts 2自带有“包含文件”功能,包含多个Struts配置文件合并为一个单元. 单个Struts配置文件 让我们来看看一个糟糕的 Struts 2 配置示例. struts.xml <?x ...

  6. chm TO html 另类方法

    因为网上下了很多chmtohtml ,都是试用版的, 转成html网页格式,总是有限制,或是不完整,我现在找到了一种折中方法,供大家参考 一,我的资源里有工具word to chm  里面有转成网页的 ...

  7. FastStone Capture 8.4 注册码

    原文:https://blog.csdn.net/mlin_123/article/details/51557079 name:bluman serial/序列号/注册码:VPISCJULXUFGDD ...

  8. How to create a Maven web app and deploy to Tomcat - fast

    原文地址: http://www.blogjava.net/sealyu/archive/2010/01/08/308706.html Procedure Prerequisites and Assu ...

  9. Python学习(六)模块 —— 第三方库

    Python 第三方库 安装第三方库 在Python中,安装第三方库包,是通过setuptools这个工具完成的.Python有两个封装了setuptools的包管理工具:easy_install和p ...

  10. HTML5 input file控件使用accept过滤限制的文件类型以及在谷歌下打开很慢的问题

    在文件上传控件(input type='file')中,可以通过accept属性实现对文件类型的过滤. 一.相关代码: 下面给出对应的文件上传控件代码: <input type="fi ...