根据官方文档的介绍,最简单的修改,编译并且运行演示应用的方式是通过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