Android编译mk文件引入三方jar、aar、so

编写Android.mk / Android.bp 引用三方 jar 包,aar包,so 库 在Android10之后,所有项目工程中,官方推荐使用Android.bp去编译构建,以前使用Android.mk构建的项目随着版本迭代升级,慢慢需要变更为Android.bp, 两者的语法都需要去了解并熟练使用。笔者之前写过Android.mk的语句介绍,里面有介绍每句代码的含义编写Android.mk把Android studio项目编译到AOSP源码中后来也总结过 Android.bp基本用法:Android.bp 语法和使用比较基础,也是在项目中运用到了就记录下来。 阅读详情

引入aar:

LOCAL_STATIC_JAVA_AAR_LIBRARIES := okayrom-lib-http-1.1.0.9 \

引入jar:

#当前模块依赖的 Java 静态库 为引用jar库的别名,可以随便取名,一般就是用库名称就可以了。
LOCAL_STATIC_JAVA_LIBRARIES := haha \ 

##############################################
include $(CLEAR_VARS)

#作为预编译库的引用对象  指定prebuilt java库规则,格式为:别名:jar文件的完整路径,这里的别名就是LOCAL_STATIC_JAVA_LIBRARIES所取的名字。
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=  haha:libs/haha.jar \                                   
                                       http-1.1.0.9:libs/http-1.1.0.9.aar \                                      

#BUILD_MULTI_PREBUILT 生成对象作为预编译库。

include $(BUILD_MULTI_PREBUILT)

 

引入三方so:

include $(CLEAR_VARS)

LOCAL_MODULE := libtensorflowlite_jni
LOCAL_SRC_FILES := libs/libtensorflowlite_jni.so
include $(PREBUILT_SHARED_LIBRARY)

 

需要注意的是引入so需要刷一下system.img,处理报错:

12-05 10:15:54.108  2074  2074 E linker  : library "/system/lib64/libtensorflowlite_jni.so" ("/system/lib64/libtensorflowlite_jni.so") needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.android.settings-2/base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/data/com.android.settings"]
12-05 10:15:54.111  2074  2074 E linker  : library "/system/lib64/libtensorflowlite_jni.so" ("/system/lib64/libtensorflowlite_jni.so") needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/com.android.settings-2/base.apk!/lib/arm64-v8a", permitted_paths="/data:/mnt/expand:/data/data/com.android.settings"]
12-05 10:15:54.112  2074  2074 E art     : No implementation found for long org.tensorflow.lite.NativeInterpreterWrapper.createErrorReporter(int) (tried Java_org_tensorflow_lite_NativeInterpreterWrapper_createErrorReporter and Java_org_tensorflow_lite_NativeInterpreterWrapper_createErrorReporter__I)
--------- beginning of crash
12-05 10:15:54.114  2074  2074 E AndroidRuntime: FATAL EXCEPTION: main
12-05 10:15:54.114  2074  2074 E AndroidRuntime: Process: com.android.settings, PID: 2074
12-05 10:15:54.114  2074  2074 E AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for long org.tensorflow.lite.NativeInterpreterWrapper.createErrorReporter(int) (tried Java_org_tensorflow_lite_NativeInterpreterWrapper_createErrorReporter and Java_org_tensorflow_lite_NativeInterpreterWrapper_createErrorReporter__I)
12-05 10:15:54.114  2074  2074 E AndroidRuntime:     at org.tensorflow.lite.NativeInterpreterWrapper.createErrorReporter(Native Method)
12-05 10:15:54.114  2074  2074 E AndroidRuntime:     at org.tensorflow.lite.NativeInterpreterWrapper.<init>(NativeInterpreterWrapper.java:59)
12-05 10:15:54.114  2074  2074 E AndroidRuntime:     at org.tensorflow.lite.Interpreter.<init>(Interpreter.java:223)
 

解决方案:

1.刷编译成功后刷system.img

2.在/system/etc/public.libraries.txt中添加so,先pull出来,修改完push一下重启即可。

 

android9系统android studio项目改成用android.mk编译引用v7包第三方jar包,aar文件和so库文件 android9系统android studio项目改成用android.mk编译引用v7包第三方jar包,aar文件和so库文件 原文件在:\vendor\..\package\DVR 打包apk在:\out\target\product\msm8953_64\system\app\DVR 项目放进系统中编译前提是APP 本身已能正常在对应系统中使用了,只是现在需要用mmm编译到系统包中 先用android studioMake project成功后,Clean Project项目,清.. 阅读详情

相关推荐

Android.mk与Android.bp实战:高效集成第三方JAR、AAR与SO库的完整指南

本文提供了在AOSP系统开发中,使用Android.mk与Android.bp两种构建文件高效集成第三方JAR包、AAR包与SO库的完整实战指南。通过对比两种方式的配置步骤与核心概念,帮助开发者应对遗留系统维护与现代化构建迁移,提升Android底层开发效率。

weixin_28836875的博客 437

JAVA引用aar_Android.mk aar引用过程

网上很多教程都有问题,很多人这样引用aar包:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS).....LOCAL_STATIC_JAVA_AAR_LIBRARIES:= LOCAL_AAPT_FLAGS := \--auto-add-overlay \--extra-packages include $(BUILD_PACKAGE)include...

weixin_39599705的博客 815

Android.mk编译脚本 & AndroidManifest.xml编写及注释

更新时间: 2019.04.17 AndroidManifest.xml: android:sharedUserId="android.uid.systemui" //SystemUI属于系统apk coreApp="true" //SystemUI属于核心apk android:persistent="true" //SystemUI不会被KILL,即被KILL后会自动重...

你只是看起很努力 1万+

Android.mk中配置so库

Android.mk中配置so库 在系统源码开发环境下,往往需要单编某个模块来debug,会涉及到打包so的问题。 第三方so库打包到apk 1、如何判断so库文件是32 bit/64 bit? 2、 如何将so库打包到apk ? 如何判断第三方库文件是32 bit/64 bit? 需要使用Linux 命令: file xxx.so。可以看到的xxx.so的格式 如何将so库打包到apk ? 需...

lijiaren_092008的专栏 5979

Android 浅度解析:mk预置AAR、SO文件、APP包和签名

本文介绍在Android系统开发中Android.mk,预置APK和AAR/SO文件,以及指定签名的操作。

我其实什么都不会 8498

T型三电平关管顺序要求

摘要: T型三电平拓扑中,IGBT关断必须遵循“外管先关、内管后关”的时序,否则易导致器件损坏。正常导通时,外管与内管共同分担电压;正确关断时,外管先关使电流经内管续流至中点,避免电压过冲;若内管先关,电流路径被强制切断,杂散电感引发高压尖峰击穿器件。这一时序本质是为电流提供低应力续流路径,需通过硬件或软件严格保障。

yun0804的博客 2373

android 关于mk如何引用其它so库

android 关于mk如何引用其它so库

Android framework 659

ArcGIS 10.2.2自带Python 2.7.5环境配置全攻略:从pip安装到gdal、arcpy调用

本文详细指导如何在ArcGIS 10.2.2自带的Python 2.7.5环境中进行高效配置。核心内容包括安装pip包管理器、部署gdal等关键地理数据处理库,并确保arcpy模块的无缝调用。通过解决路径配置与PyCharm集成问题,帮助用户在此经典环境中构建稳定、兼容的地理信息自动化工作流,有效连接ArcGIS桌面功能与Python脚本编程。

moon9的博客 767

android.mk 编译aar,Android编译mk文件引入三方jar、aar、so

引入aar:LOCAL_STATIC_JAVA_AAR_LIBRARIES := okayrom-lib-http-1.1.0.9 \引入jar:#当前模块依赖的 Java 静态库 为引用jar库的别名,可以随便取名,一般就是用库名称就可以了。LOCAL_STATIC_JAVA_LIBRARIES := haha \#########################################...

weixin_39940957的博客 739

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Models

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),大大减少需要的算力。在RGB空间:编码器encoder:,将x压缩成低维表示解码器decoder: D,将低维表示z还原成原始图像空间。1. 加入Autoencoder(上图中左侧红色部分),使得扩散过程在latent space下,提高图像生成的效率;

weixin_57974242的博客 1万+

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 247

详解android.mk中引用第三方库的方法

1.在jni文件夹下面新建prebuilt文件夹,把需要拷贝的so放倒该文件夹下面。在Android.mk中加入以下代码。在APK的Android.mk添加第三方AAR 创建libs/aaa.arr文件,修改Android.mk如下。1.在项目目录下创建目录libs(不创建也行,一会儿指向对应路径就好),将第三方的jar包放进去。1.Android车载应用开发系统学习指南(附项目实战)10.Android零基础入门到精通,高手进阶之路。3.引用,在Android.mk中添加。

Android23333的博客 1005

从Datasheet到可用的Verilog模块:手把手教你为N25Q128 SPI Flash写状态机驱动

本文详细介绍了如何从Datasheet到实现可用的Verilog模块,手把手教你为N25Q128 SPI Flash编写状态机驱动。文章涵盖SPI Flash的核心工作机制、数据手册解析方法、Verilog状态机设计实践以及调试与性能优化技巧,特别适合FPGA开发者和硬件设计工程师参考。

weixin_30596023的博客 175

移植App源码从Android Studio到系统源码编译

Android Studio目录树 server@dev:~/code/app/ToolBox$ tree . ├── Android.mk ├── app │ └── src │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ ├── libs │ │ └── res ├── build.gradle ├── gradle ├── gradle.properties

特立独行的博客 4698

泛微ecology9 利用字段值动态控制明细表显示与隐藏

本文详细介绍了在泛微ecology9中,如何利用WfForm.bindFieldChangeEvent监听字段变化,结合jQuery动态控制明细表显示与隐藏的实战方法。通过五步操作,可实现根据字段值(如报销类型)智能切换明细表,提升表单交互体验与开发效率,并确保PC与移动端完美兼容。

7z8x2c4v6b9的博客 585

CS1237卡尔曼滤波实战:如何用24位ADC实现电子秤级精度?

本文详细介绍了如何利用CS1237 24位ADC芯片结合卡尔曼滤波算法实现电子秤级精度测量。通过解析CS1237硬件特性、卡尔曼滤波原理及STM32驱动优化,提供了一套完整的解决方案,包括多通道支持、驱动代码实现和性能调优技巧,适用于工业测量和嵌入式开发领域。

linux的博客 1087

android 宏替换_Android.mk常用宏定义

常用变量定义为了方便模块编译,Build系统还设置了很多编译环境。单独编译一个模块时,需要配置变量后才能执行编译:变量作用LOCAL_SRC_FILES当前模块包含的所有源代码文件LOCAL_MODULE当前模块的名称,这个名称应当是唯一的,模块间的依赖关系就是通过这个名称来引用的LOCAL_C_INCLUDESC 或 C++ 语言需要的头文件的路径LOCAL_STATIC_LIBRARIES当前...

weixin_35977444的博客 1006

【软件使用】Calibre部分提参的实战技巧与常见问题解析

本文详细解析了Calibre部分提参(Partial PEX)的实战技巧,重点介绍了如何利用HCELL与XCELL文件高效排除已知模块,实现精准的寄生参数提取,从而快速定位后仿真中的时序与信号完整性问题。文章涵盖了从图形界面到命令行的完整操作流程,并提供了常见问题(如时钟失真、模块“消失”)的深度Debug指南与最佳实践,助力芯片设计工程师提升验证效率。

yhn456789的博客 1027

Android P系统编译Android.mk导入jar包和aar包

安卓开发中,有时候需要在系统环境下开发apk,导入第三方jar包或者so库。 导入aar包: 1、在模块根目录下新建文件夹libs,将需要aar包拷贝进libs. 2、在Android.mk文件加入: LOCAL_STATIC_JAVA_AAR_LIBRARIES := demo 3、在include $(BUILD_PACKAGE)后面加入: include $(CLEAR_VARS) LOCA...

Sunxiaolin2016的博客 4185

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android mk 引用 jar 包、so 库、aar 包,系统签名

Android.mk文件用来告知 NDK Build 系统关于 Source 的信息。它是GNU Makefile的一部分,且将被 Build System 解析一次或多次。简单示例首先我们先来看一下最简单的例子,编译一个普通的 apk。

2401_84148942的博客 961

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android mk 引用 jar 包、so 库、aar 包,移动互联网app开发实例

第一种方法,指定 LOCAL_MODULE_PATH ,在上面的讲解中,我们已经知道 $(TARGET_OUT) 代表 /system,那么生成的 apk 想放到 system/priv-app,我们可以这样配置。 LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app 第二种方法,我们也可以直接这样配置,这样生成的 apk 也会放到 system/priv-app LOCAL_PRIVILEGED_MODULE := true 假如我们想让我们生成的 apk 放到 data

m0_64603776的博客 1956

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Android mk文件指定aapt參數不压缩指定资源
下一篇: Android源代码模块引用三方so方法
杨鑫校
博客等级 码龄11年 24粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值