在对Android2.2源代码进行了一些探索之后,我了解到Android Framework可以使用大量用Cpp编写的进程间通信机制,例如CameraService、MediaService等。
我还看到许多关键类驱动这些进程间通信机制,例如IInterface、BpInterface、BnInterface、绑定器、IBinder、RefBase和许多其他机制……
我现在想用cpp (而不是使用AIDL的Java )编写我的IPC-Service,不幸的是,我找不到任何有用的资源(文章、教程、书籍等等)来详细介绍这些类的用法
任何精通这方面的人,你能给我一些想法吗?
谢谢!
发布于 2011-04-27 00:52:34
基本上没有关于这些的文档,因为它们不是公共SDK/NDK的一部分。如果你在这个级别上工作,你就是在做平台开发;文档大部分是平台的其余部分和你正在使用的东西的源代码。
您会发现这些API比SDK中的绑定器API使用起来要粗糙得多。例如,aidl目前不能生成C++接口,因此您必须手动编写所有接口存根。
发布于 2011-04-26 23:59:12
当Android SDK将您需要的一切都封装在一个设备无关的包中时,为什么还要使用C++?Android SDK是Java的,如果你想使用C++,你将会有很长的路要走。如果您想要硬件访问。
如果您真的想研究这一点,请查看Native Development Kit。
发布于 2018-06-05 22:52:41
我不知道如果这个help.But我正在尝试Generating C++ Binder Interfaces with aidl-cpp
这里有一些内容:
构建接口在.aidl文件中编写AIDL,并将它们添加到Android.mk中的LOCAL_SRC_FILES。如果您的构建目标是一个二进制文件(例如,您包含$(BUILD_SHARED_LIBRARY)),那么生成的代码将是C++,而不是Java。AIDL定义应该与实现来自相同的存储库。任何需要定义的系统都需要实现(对于parcelables和接口)。如果有多个实现(即一个在Java中,另一个在C++中),请保留原生实现的定义。Android现在的系统可以在没有Java的情况下运行系统的本机组件。如果在AIDL中使用import语句,即使来自同一个包,也需要添加到LOCAL_AIDL_INCLUDES的路径。此路径应相对于Android树的根。例如,定义com.example.IFoo的文件IFoo.aidl可能位于文件夹层次结构something/something-else/com/example/IFoo.aidl.中然后我们会这样写: LOCAL_AIDL_INCLUDES := something/something-else
https://stackoverflow.com/questions/5792957
复制相似问题