tensorflow lite的demo在android studio上环境搭建
由于很久没有接触过Android开发,而且最早用的是eclipse,所以这个demo在android studio上的搭建过程,真的是踩了不少坑。记录这篇文章,纯粹是给自己一点收获。
环境搭建的过程,还是需要一点Android Studio的使用基础的,包括gradle同步、ndk、sdk之类的,另外由于需要在线下载资源,所以准备一个网络畅通的VPN。
一、基础环境
Windows 10系统、Android studio 3.1.2、tensorflow1.10.0、gradle版本为4.4
sdk和ndk的版本如下:

Android SDK Build-Tools


二、需要修改的文件:
(1)Demo项目下的build.gradle文件

进行如下修改:

(2)Demo/app文件下的build.gradle文件
android{ ... }中需要修改的部分:

repositories{ ... }和dependencies{}需要修改的部分,如下图,主要是用于 a) 解决tensorflow-lite:0.0.0-nightly无法下载的情况 b) 依赖项与sdk版本保持一致的问题 c) gradle3.0.0版本以上的依赖默认为implementation,而不是之前的gradle2+版本的compile。
(1)手动下载tensorflow-lite:0.0.0-nightly.aar。
(2)拷贝tensorflow-lite:0.0.0-nightly.aar文件到app/libs目录下(如果不存在libs目录,则自己手动添加一个);
(3)在app下的bulid.gradle中repositories添加:
flatDir{dirs " libs"}代码,
dependencies中添加:
compile fileTree(dir: 'libs', include: ['*.jar']):
compile(name:' tensorflow-lite:0.0.0-nightly', ext:'aar')
dependencies中注释掉:compile compile 'org.tensorflow:tensorflow-lite:0.0.0-nightly'

三、同步gradle文件:
点击同步gradle的按钮
,如果没有报错,则android studio “Run” app是可以执行的,否则该按钮是灰色的,不能执行。
四、源码分析
整个demo包含6个java文件:

其中:
-AutoFitTextureView:一个自定义的View;
-CameraActivity: 整个app的入口activity,这个activity只做了一件事,就是加载了一个fragment;
- Camera2BasicFragment: 入口activity中加载的fragment,其中实现了所有跟UI相关的代码;首先在onActivityCreated中,初始化了一个ImageClassifier对象,此类是整个demo的核心,用于加载模型并实现推理运算功能。然后开启了一个后台线程,在线程中反复地对从摄像头获取的图像进行分类操作。
-ImageClassifier:是一个抽象类,demo最重要的部分,但只有两个函数比较重要,一个是构造函数
-ImageClassifierFloatInception为浮点型子类,基类为ImageClassifier,对应的浮点模型为assets资源下的7_float.tflite
-ImageClaaifierQuantizedMobileNet为量化型子类,基类为ImageClassifier,对应的数字量化模型为assets资源下的7.tflite
![]() |
tensorflow lite的demo在android studio上环境搭建的更多相关文章
- Android studio 开发环境搭建
Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...
- windows平台下Android studio开发环境搭建教程
最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...
- 【Android Studio安装部署系列】二、Android Studio开发环境搭建
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio开发环境安装步骤 下载Android Studio 下载地址: http://www.wanandroi ...
- 【Android学习笔记】Mac下Android Studio开发环境搭建
本文由@ray 出品,转载请注明出处. 文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
- Android Studio开发环境搭建和HelloWorld
跟着教程做的,已经有了JDK,直接进行后面的步骤,下载安装Android SDK 没有FQ,教程里的网址打不开,就换了个.网址 http://tools.android-studio.org/inde ...
- Android Studio 之 环境搭建
从网上整理的安装步骤及初次使用问题解决. 一.安装步骤 1.安装前确认JDK已经安装并配置好环境变量(要求JDK1.7以上的版本). 2.官网下载Windows安装包,网上下载的版本是android- ...
- ubuntu 16.04 android studio 开发环境搭建
安装步骤: 1. 安装 Java developer kit 2.安装 Android developer kit 3.安装 Android studio 4.真机调试 第一次用Linux,命令基本不 ...
- Android Studio Jni 环境搭建
第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...
随机推荐
- # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库
使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...
- 区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
区块链名词解析:ICO.IFO.IEO和IMO,分别是什么呢?本部分给出了标准答案,但其相当枯燥乏味,建议快进. ICO(Initial Coin Offering),首次代币发行,指区块链项目首次向 ...
- JS运算符、NaN
一.关系运算符 (< <= > >= == === != !==) 判断符号左右的两个数据的大小之间的关系,运算结果是一个布尔类型的值 == 只判断值 ===即判断值并且 ...
- php项目命名规范
命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录使用小写+下划线: 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并 ...
- Vue 旅游网首页开发2 - 首页编写
Vue 旅游网首页开发2 - 首页编写 项目结构 首页开发 效果图 项目开发组件化 将页面的各个部分划分成不同的组件,有助于项目的开发和维护. 项目代码初始化 项目结构修改 1.删除整个 compin ...
- JAVA随笔----浅谈lombok注解
在Java开发中,注解可谓是帮了大忙.注解的使用帮助我们简化了代码,让代码更加简洁.今天就来谈谈常用的Lombok注解. lombok注解文档 lombok官方下载地址 先看一下lombok支持的一些 ...
- autoit脚本-从基本的函数用法开始
适配浏览器:目前了解的有ie浏览器 MsgBox 显示可选提示超时的消息框 _ArrayDisplay _arraydisplay($aArray) ;$aArra一般为数组,方法用于展示表格展示数 ...
- speech
1.李开复:一个人的成功,15%靠专业知识,其余15%人际沟通,公众演讲,以及影响他人的能力 2.演讲是一门遗憾的艺术 3.没有准备就等于准备失败 4.追求完美,就是在追求完蛋 5.宁可千日无机会,不 ...
- WindowsService(Windows服务)开发步骤
https://www.cnblogs.com/moretry/p/4149489.html
- sql server把一个库表的某个字段更新到另一张表的相同字段
缘由:进行update时忘了加where条件,导致所有数据全部update.. sql: 1 update Activity set endTime=b.endTime from idj_tl_bf. ...
