生成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