当前位置: 首页 > article >正文

Android生成C++ AIDL

生成C++[Android]接口

cpp和ndk的区别

cpp:生成的代码是为了在Android源码中编译,代码中会调用Android源码中的native接口。

例如,引用的头文件:

,,,

ndk:生成的代码是为了使用ndk独立编译,调用的是ndk的接口,

例如,引用的头文件:

–lang=cpp,参数指定生成Android源码下编译的C++接口文件。

-o和-h参数分别指定.cpp文件和.h文件输出的路径。可以指定不同的目录。

1)C++接口文件比较多,一个aidl文件生成4个文件。第一步编译IMyServiceCallback.aidl后,生成文件包括:

3个头文件:

一个Interface头文件:IMyServiceCallback.h

一个Bp头文件:BpMyServiceCallback.h

一个Bn头文件:BnMyServiceCallback.h

一个源码文件:IMyServiceCallback.cpp

$ aidl -h ./cpp_android/ -o ./cpp_android --lang=cpp aidl/com/my/pkg/IMyServiceCallback.aidl
$ tree 
.
├── aidl
│   └── com
│       └── my
│           └── pkg
│               ├── IMyServiceCallback.aidl
│               └── IMyServiceInterface.aidl
└── cpp_android
    └── com
        └── my
            └── pkg
                ├── BnMyServiceCallback.h
                ├── BpMyServiceCallback.h
                ├── IMyServiceCallback.cpp
                └── IMyServiceCallback.h

$ aidl -I ./aidl/ -h ./cpp_android/ -o ./cpp_android --lang=cpp aidl/com/my/pkg/IMyServiceInterface.aidl
$ tree 
.
├── aidl
│   └── com
│       └── my
│           └── pkg
│               ├── IMyServiceCallback.aidl
│               └── IMyServiceInterface.aidl
└── cpp_android
    └── com
        └── my
            └── pkg
                ├── BnMyServiceCallback.h
                ├── BnMyServiceInterface.h
                ├── BpMyServiceCallback.h
                ├── BpMyServiceInterface.h
                ├── IMyServiceCallback.cpp
                ├── IMyServiceCallback.h
                ├── IMyServiceInterface.cpp
                └── IMyServiceInterface.h

生成C++[ndk]接口

除了–lang=ndk指定生成ndk后端接口,过程和结果都和cpp类似。

$ aidl -I ./aidl/ -h ./cpp_ndk -o ./cpp_ndk --lang=ndk aidl/com/my/pkg/IMyServiceInterface.aidl 
$ aidl -h ./cpp_ndk -o ./cpp_ndk --lang=ndk aidl/com/my/pkg/IMyServiceCallback.aidl 

$ tree cpp_*
cpp_android
└── com
    └── my
        └── pkg
            ├── BnMyServiceCallback.h
            ├── BnMyServiceInterface.h
            ├── BpMyServiceCallback.h
 

http://www.kler.cn/a/299428.html

相关文章:

  • LabVIEW温度修正部件测试系统
  • 扩展无限可能:Obsidian Web Viewer插件解析
  • Teleporters( Educational Codeforces Round 126 (Rated for Div. 2) )
  • 玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
  • 数据结构 前缀中缀后缀
  • Deepseek技术浅析(二):大语言模型
  • FastAPI 深入学习:利用__call__方法实现动态依赖项
  • 【腾讯云】AI驱动的数据库TDSQL-C如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图
  • 自己看---华为od--构成正方形的数量
  • 神经网络的可解释性理论及工具
  • timedatectl /date /hwclock 命令
  • Rust使用之【宏】
  • Vue(7)——工程化开发
  • 基于SpringBoot+Vue的学生成绩管理系统
  • [苍穹外卖]-04菜品管理接口开发
  • Node.js入门与生态全解析:包管理与构建工具详解
  • 从代码层面说算子链断链的方式
  • 【OJ刷题】双指针问题
  • 101 个 React 技巧和窍门
  • TP发邮件的功能如何实现?tp框架发送邮件?
  • 在Ubuntu上部署 Misskey 服务器
  • Spring 源码解读:使用FactoryBean创建复杂对象的实现
  • RK3576芯片在智能家居里中型智慧屏产品的应用方案分析
  • 不需要安装谷歌插件,使用使用IDEA自带的插件debug调试vue前端代码
  • 索尼发布新款PS5 Pro主机 算力与定价齐飞 9成玩家感叹“价格贵”
  • perforce 操作记录