<Android开发> 集成so库

news/2024/11/24 2:18:41/

<Android开发> 集成so库

<Android开发> HAL层集成第三方so库

一 前言

在笔者的另一个文章<Android开发> HAL层集成第三方so库 分析了如何在hal层将第三方的so库文件集成到系统中;本文其实与其是差不多,只是针对大部分so文件,而且主要分布在system和vendor目录下。

二 移植so文件

移植so目标:

文件名目标集成路径
waterxx.conf/vendor/etc/onefu/config/
vendor/lib/lib64/libxx1.so/vendor/lib64/libxx1.so
vendor/lib/lib/libxx1.so/vendor/lib/libxx1.so
system/lib/lib64/libxx2.so/system/lib64/libxx2.so
system/lib/lib/libxx2.so/system/lib/libxx2.so

新建目录并将相关文件移植到该目录下,结果如下:
在这里插入图片描述

三 新增Android.bp

新增Android.bp,并输入一下内容:

/*** Copyright (c) 2023- OneFu* All Rights Reserved by OneFu Software Technology Co., Ltd and its affiliates.* You may not use, copy, distribute, modify, transmit in any form this file* except in compliance with OneFu in writing by applicable law.** @file    Android.bp* @brief   Android.bp* @details Android.bp* @version 1.0* @author  water* @date    2023-06-12* <p>* Edit History* ----------------------------------------------------------------------------* DATE                     NAME               DESCRIPTION* 2023-06-12               water            Create it.*/cc_prebuilt_library_shared {name: "libxx1",vendor: true,multilib: {lib32: {srcs: ["vendor/lib/lib/libxx1.so"],},lib64: {srcs: ["vendor/lib/lib64/libxx1.so"],},},check_elf_files: false,compile_multilib: "both"
}
cc_prebuilt_library_shared {name: "libxx2",multilib: {lib32: {srcs: ["system/lib/lib/libxx2.so"],},lib64: {srcs: ["system/lib/lib64/libxx2.so"],},},check_elf_files: false,compile_multilib: "both"
}

cc_prebuilt_library_shared:执行与构建;
name:预构建目标so的文件名;
vendor:表示生成vendor目录下的目标;
multilib:多架构;
lib32:引用32位文件的目标;
lib64:引用64位文件的目标;
srcs:表示引用目标的路径;
check_elf_files:是否检查elf文件;
compile_multilib:编译多架构,这里选择“both”表示32位 和 64位 都要编译。

这样在上述中有“vendor”属性的编译后的目标会放在vendor目录下;未有的,则会放到system目录下。

四 添加编译目标

在device目录下找到一个自己设备使用的product.mk文件,并新增以下内容:

#add product for lib
PRODUCT_PACKAGES += \libxx1 \libxx2PRODUCT_COPY_FILES += \vendor/onefu/water/waterxx.conf:$(TARGET_COPY_OUT_VENDOR)/vendor/etc/onefu/config/waterxx.conf

五 编译验证

重新编译系统,就可以在对应目录下找到对应的so文件了。

文件名目标集成路径
waterxx.conf/vendor/etc/onefu/config/
vendor/lib/lib64/libxx1.so/vendor/lib64/libxx1.so
vendor/lib/lib/libxx1.so/vendor/lib/libxx1.so
system/lib/lib64/libxx2.so/system/lib64/libxx2.so
system/lib/lib/libxx2.so/system/lib/libxx2.so

http://www.ppmy.cn/news/347193.html

相关文章

JAVA如何学习爬虫呢?

学习Java爬虫需要掌握以下几个方面&#xff1a; Java基础知识&#xff1a;包括Java语法、面向对象编程、集合框架等。 网络编程&#xff1a;了解HTTP协议、Socket编程等。 HTML、CSS、JavaScript基础&#xff1a;了解网页的基本结构和样式&#xff0c;以及JavaScript的基本语…

计算机提示“找不到vcruntime140.dll,无法继续执行代码可”以这样子修复

首先&#xff0c;对于那些不熟悉的人来说&#xff0c;vcruntime140.dll是一个关键文件&#xff0c;用于在Windows操作系统上运行使用C语言编写的大型应用程序。如果你正在运行或安装这样的应用程序&#xff0c;但找不到vcruntime140.dll文件&#xff0c;那么你的应用程序可能无…

联想G490装ubuntu20后wifi无法使用

联想G490是一个很老的型号了&#xff0c;我装完ubuntu20.04后&#xff0c;发现wifi无法使用&#xff0c;只能使用有线。 开始直接到联想官网去查看有无驱动&#xff0c;发现老版本没有linux驱动支持 后来逛&#xff0c;无意发现以下驱动&#xff0c;安装即可解决。 通过有线…

联想服务器ThinkServer网卡驱动程序缺失的解决办法

1、概述 从学校拿回来了一台联想的服务器&#xff08;TS130&#xff09;打算部署项目测试一下&#xff0c;发现服务器原来的windows server 2003不能安装mysql64位的软件&#xff0c;就请求学校是否需要帮他们重新安装一个windows server 2008的。后来安装好server2008后发现没…

联想服务器linux系统raid驱动,SUSE Linux服务器企业版加载阵列卡驱动程序步骤

在Red Hat enterprise ver&#xff0e;3&#xff0e;0下安装 请依照以下的步骤&#xff0c;于red hat enterprise ver.3.0作业系统下安装intel ich7r lsi logic embedded sata raid控制晶片的驱动程式&#xff1a; 1&#xff0e;使用red hat作业系统安装光碟开机。 2&#xff0…

一文读懂,WAF阻止恶意攻击的8种方法

WAF&#xff08;Web 应用程序防火墙&#xff09;是应用程序和互联网流量之间的第一道防线&#xff0c;它监视和过滤 Internet 流量以阻止不良流量和恶意请求&#xff0c;WAF 是确保 Web 服务的可用性和完整性的重要安全解决方案。 它通过充当保护 Web 应用程序服务器免受恶意客…

联想g485服务器未能登陆,Lenovo G485 USB3.0驱动程序安装不上的解决方法

驱动无法安装&#xff1f;驱动丢失了&#xff1f;安装驱动总是报错&#xff1f;联想专家 一对一驱动安装服务&#xff0c;远程帮您消除烦恼&#xff01; 联想拯救者Legion游戏电脑&#xff0c;全“屏”实力&#xff0c;为战而生 &#xff01;大神护航&#xff0c;更懂玩家&…

Lenovo G470 Yosemite 10.10.5 双系统 原版镜像安装

Lenovo G470 Yosemite 10.10.5 双系统 原版镜像安装 声明&#xff1a; 在刷黑苹果前务必确认自己的机器配置是否可以刷&#xff0c;在刷黑苹果前务必好备份重要资料以防万一。因操作不当造成的一切损失自己负责&#xff0c;与本人无关。本教程只针对有安装过黑苹果经验朋友&a…