TFLite:编译(app, so,jar, aar)

2024-06-03 15:08
文章标签 编译 app jar aar tflite

本文主要是介绍TFLite:编译(app, so,jar, aar),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对Lite : NDK r14b,bazel 0.18, tensorflow 1.12以下是没问题的

对mobile:NDK R16b, bazel 0.18 tensorflow 1.12是没有问题的。

 

bazel 编译app

bazel build --cxxopt=--std=c++11 //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo

这种方式编译的app是源码编译生成的AAR,jni还是下载下来的?

 

bazel 编译tensorflowlite库

bazel build --cxxopt='--std=c++11' //tensorflow/contrib/lite/java:tensorflowlite \
--crosstool_top=//external:android/crosstool \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--cpu=armeabi

--cpu=armeabi
--cpu=armeabi-v7a
--cpu=arm64-v8a
--cpu=mips
--cpu=mips64
--cpu=x86
--cpu=x86_64

bazel-bin/tensorflow/contrib/lite/java/libtensorflowlite_jni.so
bazel-bin/tensorflow/contrib/lite/java/libtensorflowlitelib.jar

通过这种方式生成的文件,怎样编译到应用中去?

To build a standalone cc_binary or cc_library for Android without using an android_binary, use the --crosstool_top--cpu and --host_crosstool_top flags.

For example:

bazel build //my/cc/jni:target \--crosstool_top=@androidndk//:default_crosstool \--cpu=<abi> \--host_crosstool_top=@bazel_tools//tools/cpp:toolchain

使用自定义 TensorFlow Lite 版本


bazel build --cxxopt='--std=c++11' -c opt        \
  --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a   \
  //tensorflow/contrib/lite/java:tensorflow-lite
   creating: lib/
   creating: lib/arm64-v8a/
  inflating: lib/arm64-v8a/libtensorflowlite_jni.so  
   creating: lib/armeabi-v7a/
  inflating: lib/armeabi-v7a/libtensorflowlite_jni.so  
   creating: lib/x86/
  inflating: lib/x86/libtensorflowlite_jni.so  
   creating: lib/x86_64/
  inflating: lib/x86_64/libtensorflowlite_jni.so  
  adding: jni/arm64-v8a/libtensorflowlite_jni.so (deflated 63%)
  adding: jni/armeabi-v7a/libtensorflowlite_jni.so (deflated 53%)
  adding: jni/x86/libtensorflowlite_jni.so (deflated 65%)
  adding: jni/x86_64/libtensorflowlite_jni.so (deflated 65%)
Target //tensorflow/contrib/lite/java:tensorflow-lite up-to-date:
  bazel-genfiles/tensorflow/contrib/lite/java/tensorflow-lite.aar


NNAPI的支持,并不是那么简单


// ASharedMemory_create was added in Android 8.0, so safe to use with NNAPI
// which was added in 8.1.
static void* handle = loadLibrary("libandroid.so");
libandroid.so是怎么生成的?

static void* handle = loadLibrary("libneuralnetworks.so");
编译文件并没有提供怎么生成libneuralnetworks.so
应该是和文件nnapi_delegate.cc有关

看懂tensorflowlite框架源码

要是你有tensorflow训练模型的知识,看懂tensorflowlite框架源码(主要就是interpreter.cc、model.cc)

这篇关于TFLite:编译(app, so,jar, aar)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027333

相关文章

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

解决Failed to get nested archive for entry BOOT-INF/lib/xxx.jar问题

《解决FailedtogetnestedarchiveforentryBOOT-INF/lib/xxx.jar问题》解决BOOT-INF/lib/xxx.jar替换异常需确保路径正确:解... 目录Failed to get nested archive for entry BOOT-INF/lib/xxx

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核