Android下在C++环境实现native层binder服务

本文档详述如何在Android 6.0 arm 64位环境中使用C++编写binder通信服务端和客户端。内容涵盖服务端与客户端的实现过程,包括创建服务端接口、启动服务端应用、客户端接口实现以及客户端应用程序。此外,还介绍了如何通过Android.mk文件进行编译,并提供log.h辅助调试。若要开机启动binder服务,可在init.rc配置。
摘要由CSDN通过智能技术生成

此文章主要目的:在Android 6.0 arm 64位环境下使用C++编程实现binder通讯服务端和客户端

即native层binder服务通讯实现

此例子同时实现了int和string数据通讯接口


程序框架图

1.在Android源码目录下存放代码树形结构

development目录下创建相关文件列表

jack_server/
├── Android.mk
├── log.h
├── service
│   ├── Android.mk
│   ├── JACK_Service.cpp
│   └── JACK_Service.h
├── svcclient
│   ├── Android.mk
│   ├── JACK_Client.cpp
│   └── JACK_Client.h
├── svcserver
│   ├── Android.mk
│   └── JACK_server.cpp
└── svctest
    ├── Android.mk
    └── test.cpp

2.首先实现服务端

创建目录service 再创建如下三个文件

JACK_Service.h

#ifndef ANDROID_JACK_SERVICE_H
#define ANDROID_JACK_SERVICE_H

#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/Parcel.h>

namespace android
{
    class JACK_Service : public BBinder
    {
    private:
        //mutable Mutex m_Lock;
        //int32_t m_NextConnId;

    public:
        static int Instance();
        JACK_Service();
        virtual ~JACK_Service();
        virtual status_t onTransact(uint32_t, const Parcel&, Parcel*, uint32_t);
    };
}

#endif


JACK_Service.cpp

#include <binder/IServiceManager.h>
#include <binder/IPCThreadState.h>
#include "JACK_Service.h"
#include "../log.h"

namespace android
{
    //static struct sigaction oldact;
    static pthread_key_t sigbuskey;
    
    int JACK_Service::Instance()
    {
        DebugPrint("JACK_Service Instantiate\n");
        int ret = defaultServiceManager()->addService(
                String16("jack.svc"), new JACK_Service());
        DebugPrint(" 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值