在Android的Cpp中使用IPC
use of IPC in Cpp in Android
在对Android2.2源代码进行了一些探索之后,我了解到Android框架可以使用大量用Cpp编写的IPC机制,如CameraService,MediaService等。
我还看到许多关键类驱动这些IPC机制,如IInterface, BpInterface, BnInterface, Binder, IBinder, RefBase和许多其他…
我现在想写我的ipc服务在cpp(不是在Java中使用AIDL),不幸的是,我找不到任何有用的资源(文章,教程,书籍等),彻底详细使用这些类
谁是精通这方面,你可以给我的想法吗?谢谢!
基本上没有关于这些的文档,因为它们不是公共SDK/NDK的一部分。如果你在这个层次上工作,你就是在做平台开发;文档在很大程度上是平台的其余部分和您正在使用的东西的源代码。
您会发现这些比SDK中的Binder api使用起来更粗糙。例如,aidl目前不能生成c++接口,因此您必须手工编写所有的接口存根。
当Android SDK提供了你所需要的一切,包装在一个独立于设备的包中时,为什么还要使用c++ ?Android SDK是Java,如果你想使用c++,你将会在很长一段时间内,特别是如果你想要硬件访问。
如果你真的想研究这个,看看Native Development Kit。
我不知道这是否有帮助。但是我正在尝试用aidl-cpp
生成c++绑定接口这里的一些内容:
建立接口将AIDL写入. AIDL文件中,并将其添加到Android.mk中的LOCAL_SRC_FILES中。如果你的构建目标是一个二进制文件(例如你包含$(BUILD_SHARED_LIBRARY)),那么生成的代码将是c++,而不是Java。AIDL定义应该驻留在与实现相同的存储库中。任何需要定义的系统也需要实现(parcelables和接口)。如果有多个实现(例如,一个在Java中,一个在c++中),则保留原生实现的定义。Android现在有一些系统可以在没有Java的情况下运行系统的本地组件。如果在AIDL中使用import语句,即使是来自同一个包,也需要为LOCAL_AIDL_INCLUDES添加一个路径。这个路径应该相对于Android树的根目录。例如,文件IFoo。定义com.example.IFoo的aidl可能位于文件夹层次结构中:some/some-other/com/example/ifoo.aidl。然后我们会写:LOCAL_AIDL_INCLUDES:= something/something-else
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- Linux的Cpp上的计时器
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 命名空间中具有.h和.cpp文件的类
- 内置函数可查看CPP中的成员变量
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- Cpp-Tuple使用带有变量的get
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 使用2个键的cpp-stl::优先级队列排序不正确
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何在cpp文件之间切换窗口?在Qt中
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我需要知道编译器如何在cpp中使用析构函数
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 无法在UE4中包含BP类到CPP类
- 在Android的Cpp中使用IPC