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

此文章主要目的:在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(" 
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值