前言
最近在研究ML的相关内容,开始在应用中接入 。花了不少时间,添了不少坑,如果是裸的空项目接入还好,如果是现有的线上产品的接入,还是会有不少问题需要处理的,而且过程中,很多错误,网上的结论都是错误的,这个流程是我手把手一步步走的~亲测靠谱
先看效果
文章插图
接入sdk
开始只是以为简单的接入的 aar,
发现使用了JAVA 8的类属性,之前我们的工程使用的是 2.3,需要加入,但是打开之后,整体编译特别慢,而且经常GC too many time,导致编译崩溃,因为最后添加了jack的dex转换,我们工程大的情况下20分钟是出不来的 。。。
决定升级到3.X
升级.X
开始直接升级到了 4.1,build tool升级到了3.1.3,因为很久没有琢磨了 。
发现有3个主要的显式变化,还有很多编译器的改动,加入了D8,aapt2,编译速度有很大的提升 。
1. compile改成implementation,test和debug的依赖也以此类推,子模块可以不用改动,而且日志里 写的到2018年底,全面废除compile,我们提前改了吧 。2. 第二个注解库,需要显式声明,具体样式如下compile 'org.weex.plugin:processor:1.0.2'annotationProcessor 'org.weex.plugin:processor:1.0.2'3. 子库里的依赖,可以通过一个processer属性配置,依赖该子模块的主模块需要添加javaCompileOptions {annotationProcessorOptions {includeCompileClasspath true}}
终于可以编译了:
然后发现通过直接运行,会因为安全图片无法加载,阿里郎登录就直接崩溃,排查了一下,发现是因为导致,新版里面增量编译导致了这个问题,于是关闭了,ok,加密图片ok
文章插图
加入的sdk
这个时候加入sdk,发现直接崩溃,报了一个C++层的错误,开始以为是模型被压缩了,导致加载模型报错了,网上查结论只是说换一个版本的的sdk,版本从+换成0.1,换了依然崩溃 。
仔细分析了下原因,发现网上的各个解决方案都不太正确,其实是JNI层的问题,首先这个so有没有加载成功,我把apk解压缩,就会发现,其实是因为lib里面i.so没有的so,导致的 。。。
研究了一波的aar,发现只打包了
【Android TensorFlowLite sdk接入详细记录】
armeabi-v7a, arm64-v8a, x86, x86-64
那只有修改ndk的abi支持类型咯,但是发现如果修改了ndk配置,那很多应用中用到的的so的sdk就无法运行,我只能自己编译一个的so来使用了 。
编译自己生成i.so
既然官方的aar没有对应的so,又是开源的,那我自己编译一个so出来吧,
查看文档,先安装bazel,通过brew可以很快的安装
现在的根目录的添加配置项目,注意这个地方是新增
接着配置好 和Ndk的路径,我之前用NDK14编译最新代码会有问题,所以换成了16,不用17,目前的17会有别的问题 。。。
android_sdk_repository (name = "androidsdk",api_level = 23,build_tools_version = "26.0.1",path = "/Users/XXX/Library/Android/sdk",)android_ndk_repository(name = "androidndk",path = "/Users/XXX/Library/Android/sdk/ndk-bundle",api_level = 16,)
安装完bazel之后,再安装Xcode(刚换的电脑,所以还没有Xcode,也算是踩到另一个坑),最新版本,然后又报了一个找不到的错误官方组件的问题 。
这个地方一定要注意一点,如果你安装了xcode的组件,然后还是报依赖错误,很有可能是因为你clone的姿势不对
一定要这么clone
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
- Android Study 之聊聊权限那点事儿~别怕,就是干~!!!
- Android:实现签名功能——signature-pad库
- 10 年 Android 开发者突遭谷歌封号:“从此放弃,并决定开源所有应用!”
- Android改变图标颜色的方法记录
- 十二 处女男学Android---Android 菜单(Menu)详解与应用
- 长期更新 Android常用监听事件汇总
- Android Wear 手机与手表数据通讯
- Android 7.0修改ro属性
- JDK和SDK的区别
- Android开发笔记之简易画画板的制作