android bp脚本
一。android大约从7.0开始引入 .bp文件代替以前的.mk文件,用于帮助android项目的编译配置文件。
二。mk文件转化为bp文件,可以使用下面命令转化,注意命令中>,这是写入文件。androidmk是android源码自带的工具,他可以显示mk转换后的bp,后面是写入Android.bp
androidmk Android.mk > Android.bp
三。这两个编译脚本可以对应,所以能够转化,可以在下面的文件中看到对应的规则,事实是,虽然使用了bp,但mk依然可以正常使用,如果有老项目,可以不必转化
/build/soong/androidmk/cmd/androidmk/android.go
四。bp编译脚本常用的模块关键字
1.编译成 Java 库
java_library
2.编译成 Java 静态库
java_library_static
3.编译成 App 应用Android.bp
android_app {
......
}
4编译成 Native 动态库
Android.bp
cc_library_shared {
......
}
5 编译成 Native 静态库
Android.bp
cc_library_static {
......
}
6 编译成 Native 执行程序
Android.bp
cc_binary {
......
}7 编译成头文件库
Android.bp
cc_library_headers {
......
}
8 预加载静态库
cc_prebuilt_library_static
9 预加载动态库
cc_prebuilt_library
五文件路径
1 本地头文件路径
Android.bp
local_include_dirs: ["xxx", ...]
2 导出的头文件路径
Android.bp
export_include_dirs: ["xxx", ...]
3 资源文件路径
Android.bp
resource_dirs: ["xxx", ...]
六 库依赖
1 依赖的静态库
Android.bp
static_libs: ["xxx", "xxx", ...]
2 依赖的动态库
Android.bp
shared_libs: ["xxx", "xxx", ...]
3 依赖的头文件库
Android.bp
header_libs: ["xxx", "xxx", ...]
4 依赖的 Java 库
Android.bp
static_libs: ["xxx", "xxx", ...]
七安装到不同分区中
1 安装到vendor中
Android.bp
proprietary: trueor
vendor: true
2 安装到product中
Android.bp
product_specific: true
3 安装到odm中
Android.bp
device_specific: true
八编译参数
1 C flags
Android.bp
cflags: ["xxx", "xxx", ...]
2 Cpp flags
Android.bp
cppflags: ["xxx", "xxx", ...]
3 Java flags
Android.bp
javacflags: ["xxx", "xxx", ...]
九一个放置第三方open ssl so和a的bp
cc_prebuilt_library_static {
name: "liboopenssl",
//product_available: true,
//vendor_available: true,
//vndk: {
// enabled: true,
//},
srcs: [
"lib/libssl.a",
],
export_include_dirs: ["include"],
//vendor: true
}
cc_prebuilt_library {
name: "libopenssl_shared",
product_available: true,
vendor_available: true,
vndk: {
enabled: true,
},
srcs: [
"lib/libssl.so",
],
shared_libs: [
],
//sanitize: {
// never: true,
//},
static_libs: [
//"liboopenssl",
],
export_include_dirs: ["include"],
//vendor: true
}
cc_prebuilt_library_static {
name: "liboopencrypto",
//product_available: true,
//vendor_available: true,
//vndk: {
// enabled: true,
//},
srcs: [
"lib/libcrypto.a",
],
export_include_dirs: ["include"],
//vendor: true
}
cc_prebuilt_library {
name: "libopencrypto_shared",
product_available: true,
vendor_available: true,
vndk: {
enabled: true,
},
srcs: [
"lib/libcrypto.so",
],
shared_libs: [
],
//sanitize: {
// never: true,
//},
static_libs: [
//"liboopencrypto",
],
export_include_dirs: ["include"],
//vendor: true
}
十。C++ aidl生成
cc_library_static{
name:"libaidltest",
local_include_dirs:[
"include"
],
aidl:{
local_include_dirs:["aidl"],
include_dirs:[
"frameworks/native/aidl/binder"
],
export_aidl_headers:true,
},
srcs:[
"FileInfo.cpp",
":libfile_aidl"
],
shared_libs:[
"libbinder",
"libutils",
],
}
filegroup{
name:"libfile_aidl",
srcs:[
"aidl/com/hht/FileInfo.aidl",
"aidl/com/hht/IFileInfoCallback.aidl",
"aidl/com/hht/IGetFileInfo.aidl"
],
path:"aidl",
}
十二
// 生成一个so库
cc_library_static {
name: "libfileservice_aidl",
srcs: [
":fileservice_aidl",
],
aidl: {
local_include_dirs: ["aidl"],
include_dirs: [
"frameworks/native/aidl/binder"
],
export_aidl_headers: true,
},
shared_libs: [
"libbinder",
"libutils",
"liblog",
],
}
filegroup {
name: "fileservice_aidl",
srcs: [
"aidl/com/filetool/IFileOperation.aidl",
],
path:"aidl",
}
//
// 生成可执行文件
cc_binary {
name: "fileservice",
srcs: [
"main.cpp",
"FileService.cpp",
],
init_rc: ["sota.rc"],
cflags: [
"-Werror",
"-Wno-error=deprecated-declarations",
"-Wall",
"-Wformat-security",
"-Wno-unused-parameter",
],
shared_libs: [
"libbinder",
"libcutils",
"liblog",
"libutils",
"libbase",
],
static_libs:[
"libfileservice_aidl",
]
}
十。错误总结
。。。
Android.bp语法和使用方法讲解 (yii666.com)aidl 实现native service和App通信_aidl native service_东东旭huster的博客-CSDN博客
相关文章:
android bp脚本
一。android大约从7.0开始引入 .bp文件代替以前的.mk文件,用于帮助android项目的编译配置文件。 二。mk文件转化为bp文件,可以使用下面命令转化,注意命令中>,这是写入文件。androidmk是android源码自带的工具,他可…...
Redis 数据库 NoSQL
目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值(Key-Value)存储数据库 列存储数据库 文档型数据库 图形(Graph)数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…...
RN 项目异常问题整理
常见问题 无法找到 CardStackStyleInterpolator StackViewStyleInterpolator 这个方法集来代替 CardStackStyleInterpolator的,这个方法集的路径也需要注意一下,在2.12.1版本之前, 该文件在react-navigation/src/views/StackView/中…...
STM8编程[TIM1多路PWM输出选项字节(Option Byte)操作和IO复用]
TIM1多路PWM输出选项字节(Option Byte)操作和IO复用 本文摘录于:https://blog.csdn.net/freeape/article/details/47008033只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 代码上要使用TIME1输出3路PWM,代码如下: void tim…...
Java算法_ 反转二叉树(LeetCode_Hot100)
题目描述:给你一棵二叉树的根节点 ,翻转这棵二叉树,并返回其根节点。root。 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/8/16 13:18* 4*/public class In…...
C/C++ 标准模版库STL(持续更新版)
标准模版库STL 目录 算法库 栈 队列 向量 映射 列表 双向链表 集合 Iterator 送代器 <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器…...
ARM(实验二)
uart4.h #ifndef __H__ #define __H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化 void hal_uart4_init();//发送一个字符函数 void hal_put_char(const char str);//发…...
由“美”出发 听艺术家林曦关于美育与智慧的探讨
不久前,林曦老师与我们的老朋友「十点读书」进行了一次线上直播,有关林曦老师十余年的书法教学,和传统美育的心得,以及因此诞生的新书《无用之美》。 这一次的直播,由“美”的主题出发,延伸出美育…...
Serial与Parallel GC之间的不同之处是什么?
Serial GC(串行垃圾回收器)和Parallel GC(并行垃圾回收器)都是Java虚拟机(JVM)中用于进行垃圾回收的两种基本算法。它们在性能、资源利用和回收效率等方面存在一些不同之处。下面是它们之间的详细比较: 1.工作方式 Serial GC:它是一种单线程的垃圾回收器…...
GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放
技术背景 我们在对接GB28181设备接入模块的时候,遇到这样的技术诉求,好多开发者期望能提供编码后(H.264/H.265、AAC/PCMA)数据对接,确保外部采集设备,比如无人机类似回调过来的数据,直接通过模…...
【java】为什么文件上传要转成Base64?
文章目录 1 前言2 multipart/form-data上传3 Base64上传3.1 Base64编码原理3.2 Base64编码的作用 4 总结 1 前言 最近在开发中遇到文件上传采用Base64的方式上传,记得以前刚开始学http上传文件的时候,都是通过content-type为multipart/form-data方式直接…...
SCSS 学习笔记 和 vscode下载live sass compiler插件配置
1、下载livelive sass compiler插件并配置 // 在 已有代码 下面 添加下面 代码,一般刚刚下载打开最后一行是:// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面复制进去保存就行"liveSassCompile.settings.autoprefix&qu…...
CSS中的字体属性有哪些值,并分别描述它们的作用。
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ font-style⭐ font-weight⭐ font-size⭐ font-family⭐ font-variant⭐ line-height⭐ letter-spacing⭐ word-spacing⭐ font⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专…...
机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识
机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明:条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明:条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…...
HighTec工程用命令行编译
当工程中含有太多模型生成的代码的时候,如果修改了一部分代码,HighTec自带的编译器编译时间会非常的慢,有的需要半个小时甚至一个小时,这是因为每次修改之后HighTec都会从头重新检索更新,太浪费时间了,于是…...
【C语言】每日一题(找到所有数组中消失的数字)
找到所有数组中消失的数字,链接奉上。 这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种…...
PostgreSql 备份恢复
一、概述 数据库备份一般可分为物理备份和逻辑备份,其中物理备份又可分为物理冷备和物理热备,下面就各种备份方式进行详细说明(一般情况下,生产环境采取的定时物理热备逻辑备份的方式,均是以下述方式为基础进一步研发编…...
鲲鹏916/920处理器性能比较
CPUKunpeng916Kunpeng920指令集Cotex-A75TaiShan-V110主频2.4GHz2.6GHz/3.0GHz核数3224/32/48/64CacheL1: 48 KB instruction cache and 32 KB data cache L2: 256 KB private per core L3: 32 MB L1: 64 KB instruction cache and 64 KB data cache L2: 512 KB private per co…...
《Go 语言第一课》课程学习笔记(八)
基本数据类型 Go 原生支持的数值类型有哪些? Go 语言的类型大体可分为基本数据类型、复合数据类型和接口类型这三种。 其中,我们日常 Go 编码中使用最多的就是基本数据类型,而基本数据类型中使用占比最大的又是数值类型。 整型 Go 语言的…...
管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——联选言
文章目录 第五节 联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2013-49)-联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2012-33)-联言+选言-摩根定理-非(A或B)=非A且非B,非(A且B)=非A或非B真题(2014-42)-联言+选言-摩根定理-非(A或B…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...
EEG-fNIRS联合成像在跨频率耦合研究中的创新应用
摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...
