根据官方文档的介绍,最简单的修改,编译并且运行演示应用的方式是通过Android Studio。虽然官方文档强调通过源码编译中涉及到的Bazel组件并不支持windows, 但是为了便于操作,除非涉及到通过源码编译,我们依然使用windows进行操作。在本文中,我们使用Android Studio打开样例工程。

PREPARE:


1. 首先用Git Clone整个项目:选择对应的 版本 1.5.0 ,切换到对应的分支

git clone ​​https://github.com/tensorflow/tensorflow.git​

不过还是选择直接下载zip包比较小,比较快一些。

2. 用Android Studio打开项目所在的project, 如果遇到版本兼容问题,按照Android Studio的提示解决即可,google & baidu。

android studio需要配置好代理。

Android Studio打开目录 tensorflow/tree/master/tensorflow/examples/android。

打开工程后会提示相应gradle设置。选择确认。

修改​​build.gradle​​​ , 把​​nativeBuildSystem​​的值改为none, 这样就不会本地编译tensorflow库,而是直接用TensorFlow AAR from JCenter.

def nativeBuildSystem = 'none'

修改​​build.gradle​​​和​​download-models.gradle​​​文件中所有的​​jcenter()​​​为 ​​jcenter { url "http://jcenter.bintray.com" }​​ 。这一步在内网环境下必须要做, 目的是从jcenter的http地址下载相关aar包。

3. 在Window10环境下,我只编译Java部分的代码, jni部分的代码我直接用了官方jinkens编译出的so文件,

直接 点击 ​​libtensorflow_demo.so​​ (​​http://ci.tensorflow.org/view/Nightly/job/nightly-android/lastSuccessfulBuild/artifact/out/native/libtensorflow_demo.so/​​​)跳到对应的网页,点击打包下载 。

在工程目录下新建libs文件夹,该文件夹会自动换成jniLibs显示,将libtensorflow_demo.so.zip解压后得到的四个文件夹拷贝到 libs路径下

这样就不需要自己编译jni库了。

4. 相关模型下载

直接运行会执行 gradle 中​​task downloadFile​​下载模型文件,会超时而且比较慢 ,会有下面的错误。

Execution failed for task ‘:downloadFile’.

可以采用迅雷 载模型文件并放到​gradleBuild/downloads​下面, 直接用。

打开download-models.gradle文件,

// hard coded model files

// LINT.IfChange

def models = [‘inception5h.zip’,

‘object_detection/ssd_mobilenet_v1_android_export.zip’,

‘stylize_v1.zip’,

‘speech_commands_conv_actions.zip’]

// Root URL for model archives

def MODEL_URL = ‘​​https://storage.googleapis.com/download.tensorflow.org/models​​​’

下载上面的4个文件, url地址就是MODEL_URL和文件名的拼接, 下载完后放到​​gradleBuild/downloads​​下面, 后面再运行就不会下载了。

5. 在Android Studio编译和运行Demo。

重新编译运行,然后会在手机安装4个图标:

TF Classify、TF Detect、TF Stylize、TF Speech

错误 :

compile debuf java with javac Unable to find source java class tensorflow\op\core\Constant.java because it does not belong to any of the source

试了好久都没解决,然后tensorflow的版本从1.6 降到1.5解决了这个问题 。

其他错误自行根据提示摸索解决,有时候google也是帮不到你到。

参考文献:

​https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android/​​​

​https://github.com/tensorflow/tensorflow/tree/r1.5​​​

​http://www.voidcn.com/article/p-plfnsmlh-bqp.html​​​

​https://ci.tensorflow.org/view/Nightly/job/nightly-android/​​​

​https://developer.android.com/ndk/downloads/index.html#rel​​​

​https://developer.android.com/studio/run/index.html?utm_source=android-studio​​​

​​