参考了网站https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android。
运行网站上的Demo。
下载
首先,我们从网上下载示例代码,使用如下命令。
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
上述命令把TensorFlow全部下载下下来了。
打开Android Studio,选择open,导航到Tensorflow/tensorflow/example/android中。
修改配置
编辑build.gradle文件,把nativeBuildSystem
的值从bazel
修改为none
。使project能够以最简单的方式进行编译。
编译
对所有类型的编译,第一步都是下载Tensorflow repo。
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
使用bazel编译
bazel方法还不支持在Windows系统中编译生成Android程序。
安装bazel和Android依赖条件
bazel是tensorflow主要的构建系统。要使用bazel来构建,你的系统应该安装了tensorflow、Android NDK和SDK。
安装最新版本的bazel
参考我之前的博客http://blog.csdn.net/nicholas_wong/article/details/76474751。
安装Android NDK
从网站https://developer.android.com/ndk/downloads/older_releases.html#ndk-12b-downloads下载最新版的Linux64-bit(x86)版本。
下载需要一段时间,下载之后怎么安装一会儿再写。
安装Android SDK
这个可以在Android Studio中选择安装,需要注意的是,Build Tools API要高于23。
编辑WORKSPACE
编辑tensorflow/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_SDK>",
#)
#
# Android NDK r12b is recommended (higher may cause issues with Bazel)
#android_ndk_repository(
# name="androidndk",
# path="<PATH_TO_NDK>",
# # This needs to be 14 or higher to compile TensorFlow.
# # Please specify API level to >= 21 to build for 64-bit
# # archtectures or the Android NDK will automatically select biggest
# # API level that it supports without notice.
# # Note that the NDK version is not the API level.
# api_level=14)
修改为如下内容
android_sdk_repository(
name = "androidsdk",
api_level = 26,
# 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 = "/twsz/home/Android/Sdk/",
)
# Android NDK r12b is recommended (higher may cause issues with Bazel)
android_ndk_repository(
name="androidndk",
path="/twsz/home/Android/Ndk/android-ndk-r12b/",
# This needs to be 14 or higher to compile TensorFlow.
# Please specify API level to >= 21 to build for 64-bit
# archtectures or the Android NDK will automatically select biggest
# API level that it supports without notice.
# Note that the NDK version is not the API level.
api_level=26)
需要注意的是,在这里,你要把两个path修改成为SDK和NDK对应的路径,同时api_level
要修改成为你本机安装的最高版本的API,build_tools_version
应该是你安装有的版本。
安装模型文件(可选的)
Build APK
在tensorflow/
中运行如下命令
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
需要一段时间。
出现如下信息说明成功。
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: 452.830s, Critical Path: 67.29s
INFO: Build completed successfully, 938 total actions
在手机上安装APK
使用如下命令
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
在手机上会安装三个应用,点击对应图标,启动应用。