首先是把tensorflow
克隆到本地一份。
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
既然是谷歌官方要求的,最好把--recurse-submodules
加上,文档说可以避免一些数据结构序列化时的编译问题。
准备编译
1.安装bazel
bazel
是谷歌自己的构建工具。tensorflow
只能部分支持cmake
或者gradle
,而bazel
是tensorflow
工程的主要构建工具。
Mac和Linux用户根据文档进行安装。Windows用户,按照官方建议到下面的链接下载demo的二apk文件,目前bazel在windows平台还处于试验阶段。
bazel
安装成功与否,用bazel version
检查版本即可。
2.下载NDK
最好下载r12b
版本的,最新的r13b
可能与bazel
有兼容问题。
下载完成后解压到自定义目录,然后在~/.bash_profile
(linux
在~/.bashrc
)下添加环境变量。环境变量的添加过程大家百度一下吧,不是这里的重点。
3.下载>=23 Android SDK
Tensorflow Android Demo
必须在大于等于23
的API
环境中编译。可以打开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 = 23, # # 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 14 or higher to compile TensorFlow. # # Note that the NDK version is not the API level. # api_level=14)
这两部分定义了SDK
和NDK
的路径,把/path/to/your
的部分改成系统相应的路径。然后将每一行前的注释去掉。如下:
# Uncomment and update the paths in these entries to build the Android demo. android_sdk_repository( name = "androidsdk", api_level = 23, # 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 14 or higher to compile TensorFlow. # Note that the NDK version is not the API level. api_level=14)
开始编译
在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
即可安装到手机。