gradle引入nightly版本库之坑
2020-11-24 本文已影响0人
HawkFlying
介绍
nightly:每晚一更新
Nightly Build 也叫Daily Build 每日构建
每日构建(Nightly Build,也叫Daily Build), 是将一个软件项目的所有最新代码取出,从头开始编译,链接,运行测试软件包对代码进行单元测试并对主要功能进行测试,发现错误并报告错误的完整过程.每日 构建是连续集成的一个最佳实践,它要求每天至少构建软件一次.因为对于许多大型项目来说,每次构建花掉的时间可能高达几个小时,在白天进行构建可能会消耗 过多的计算机资源,对开发造成一定的影响,所以许多大型项目的每日构建是在夜间无人工作或者人比较少的时候进行的.所以Daily Build就成了Nightly Build。
可见,nightly版本更新频繁,不稳定。
踩坑
之前用tensorflow实现某x动物的脸部识别,引入tensorflow库是用官方demo的,如下:
implementation('org.tensorflow:tensorflow-lite:0.0.0-nightly')
implementation('org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly')
implementation('org.tensorflow:tensorflow-lite-support:0.0.0-nightly')
可以看到,每个库后缀都有nightly字样,没错,这是tensorflow 的nightly版本;
本来一直用得好好得,今天打包出现有方法找不到的错误,如下:
TFLiteObjectDetectionAPIModel.java:257: error: cannot find symbol
if (tfLite != null) tfLite.setUseNNAPI(isChecked);
^
symbol: method setUseNNAPI(boolean)
location: variable tfLite of type Interpreter
我去看了下代码,确实没有这个方法,如下:
报错代码.png
接着我进入源码,搜索下丢失的方法,找到了,如下:
搜索丢失方法.png
可以看到,源码中丢失的方法是找到了,但不在原来的类下面了,这时我就想到,可能是tensor库升级了,所以我再去看gradle上引入tensorflow库,发现引入的tensorflow库是nightly版本,这时更加确定我的猜想。
填坑
这时我就需要找tensorflow不是nightly版本的库,tensorflow库还是比较难找的,最终去github tensoflow demo全局搜索org.tensorflow:tensorflow-lite,找到一个,如法炮制找到其它库,终于实力填坑,哈哈
implementation 'org.tensorflow:tensorflow-lite:2.2.0'
implementation 'org.tensorflow:tensorflow-lite-gpu:2.2.0'
implementation "org.tensorflow:tensorflow-lite-support:0.1.0-rc1"
建议:gradle中不要引入nightly版本的库