在Android中使用Cpp中的Cpp

时间:2011-04-26 15:52:17

标签: c++ android

在对Android2.2源代码进行了一些探索之后,我开始了解Android框架是否使用Cpp编写的大量IPC机制,如CameraService,MediaService等。

我也看到很多关键类驱动这些IPC机制,例如IInterface,BpInterface,BnInterface,Binder,IBinder,RefBase和其他很多......

我现在想用cpp编写我的IPC服务(不是使用AIDL的Java),遗憾的是,我找不到任何有用的资源(文章,教程,书籍等),这些资源详尽地详细使用了这些类

任何精通这方面的人,你能给我一些想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

为什么在Android SDK为您提供所需的一切时使用C ++,并将其包含在独立于设备的软件包中? Android SDK是Java,如果你想使用C ++,你将会长期使用。如果你想要硬件访问。

如果您真的想对此进行调查,请查看Native Development Kit

答案 1 :(得分:0)

基本上没有关于这些的文档,因为它们不是公共SDK / NDK的一部分。如果您在这个级别工作,那么您正在进行平台开发;文档大部分是平台的其余部分和您正在使用的东西的源代码。

你会发现这些 lot 更粗糙,而不是SDK中的Binder API。例如,aidl当前无法生成C ++接口,因此您必须手动编写所有接口存根。

答案 2 :(得分:0)

我不知道这是否有帮助。但我正在尝试Generating C++ Binder Interfaces with aidl-cpp

这里的一些内容:

  

构建界面   在.aidl文件中编写AIDL并将其添加到Android.mk中的LOCAL_SRC_FILES。如果您的构建目标是二进制文件(例如,您包含$(BUILD_SHARED_LIBRARY)),那么生成的代码将是C ++,而不是Java。   应该从与实现相同的存储库托管AIDL定义。任何需要定义的系统也需要实现(对于parcelables和interface)。如果有多个实现(即一个在Java中,一个在C ++中),请使用本机实现保留定义。 Android现在拥有在没有Java的情况下运行系统本机组件的系统。   如果在AIDL中使用import语句,即使是在同一个包中,也需要添加LOCAL_AIDL_INCLUDES的路径。此路径应相对于Android树的根目录。例如,定义com.example.IFoo的文件IFoo.aidl可能位于文件夹层次结构中/ something-else / com / example / IFoo.aidl。然后我们会写:   LOCAL_AIDL_INCLUDES:= something / something-else

相关问题