Android14之报错:error:add its name to the whitelist(一百九十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:解决Android14添加binder接口报错问题。

2.报错信息

  • error: static assertion failed due to requirement ‘internal::allowedManualInterface(“android.demo.IMyService”)’: b/64223
    827: Manually written binder interfaces are considered error prone and frequently have bugs. The preferred way to add interfaces is to define an .aidl file to auto-generate the interface. If an interface must be manually written, add its name to the whitelist.
    IMPLEMENT_META_INTERFACE(MyService, “android.demo.IMyService”);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • frameworks/native/libs/binder/include/binder/IInterface.h:116:5: note: expanded from macro ‘IMPLEMENT_META_INTERFACE’
    static_assert(internal::allowedManualInterface(NAME),

3.Binder介绍

  • Binder,全称为Android Binder IPC(Inter-Process Communication),是Android系统中用于进程间通信的一种机制。它是一种基于C/S(客户端/服务器)模式的通信方式,主要由客户端、服务端和Binder驱动组成。Binder机制在Android系统中具有重要的地位,因为它使得不同的进程之间能够高效、安全地进行数据交换。
  • 在Android系统中,进程间通信的需求非常普遍。例如,当一个应用程序需要访问另一个进程中的功能或数据时,它们需要通过某种方式进行通信。Binder机制为这种通信提供了便捷的方式。通过使用Binder,进程间可以像本地代码一样进行通信,而无需关心底层的网络协议或数据序列化等问题。
  • Binder通信机制的主要组成部分如下:
  1. 客户端(Client):发起通信请求的一方。客户端需要知道服务端的接口和方法,以便进行调用。
  2. 服务端(Server):提供功能或数据的一方。服务端需要实现一个或多个接口,并注册到Binder驱动中,以便客户端能够找到并调用它们。
  3. Binder驱动:位于内核空间,负责处理进程间通信的请求。Binder驱动负责将客户端的请求传递给服务端,并将服务端的响应返回给客户端。
  4. 代理(Proxy)和本地方法(Stub):在客户端和服务端之间起到中转作用。代理位于用户空间,负责将客户端的请求发送给Binder驱动;本地方法位于内核空间,负责接收Binder驱动的请求并调用服务端的方法。
    Binder机制的工作流程如下:
  5. 服务端实现一个或多个接口,并注册到Binder驱动中。注册过程中,服务端会创建一个Binder对象,该对象包含了服务端接口的方法列表。
  6. 客户端通过查找Binder对象,找到服务端接口,并调用其中方法。客户端的调用会被代理发送给Binder驱动。
  7. Binder驱动接收到客户端的请求后,查找对应的服务端Binder对象,并将请求传递给它。
  8. 服务端的Binder对象接收到请求后,调用相应的方法,并将结果返回给Binder驱动。
  9. Binder驱动将服务端的响应返回给客户端。
    Binder机制具有以下优点:
  10. 高效:Binder机制基于内存映射,避免了数据在进程间的复制,从而提高了通信效率。
  11. 安全:Binder机制提供了权限控制,只有具有相应权限的进程才能进行通信。
  12. 灵活:Binder机制支持多种类型的数据传输,包括基本数据类型、对象和文件等。
  13. 跨平台:Binder机制可以运行在不同的硬件平台上,具有良好的兼容性。
    总之,Binder机制在Android系统中起着至关重要的作用,它为进程间通信提供了高效、安全的方式。通过对Binder机制的了解,开发者可以更好地掌握Android系统的底层原理,并在开发过程中更加高效地进行进程间通信。

4.解决方案

  • frameworks/native/libs/binder/include/binder/IInterface.h

修改前:

#ifndef DO_NOT_CHECK_MANUAL_BINDER_INTERFACES

#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME)                       \
    static_assert(internal::allowedManualInterface(NAME),               \
                  "b/64223827: Manually written binder interfaces are " \
                  "considered error prone and frequently have bugs. "   \
                  "The preferred way to add interfaces is to define "   \
                  "an .aidl file to auto-generate the interface. If "   \
                  "an interface must be manually written, add its "     \
                  "name to the whitelist.");                            \
    DO_NOT_DIRECTLY_USE_ME_IMPLEMENT_META_INTERFACE(INTERFACE, NAME)    \

#else

#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME)                       \
    DO_NOT_DIRECTLY_USE_ME_IMPLEMENT_META_INTERFACE(INTERFACE, NAME)    \

#endif

修改后:

#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME)                       \
    DO_NOT_DIRECTLY_USE_ME_IMPLEMENT_META_INTERFACE(INTERFACE, NAME)    \

最近更新

  1. TCP协议是安全的吗?

    2024-03-18 00:38:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-18 00:38:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-18 00:38:04       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-18 00:38:04       20 阅读

热门阅读

  1. springBoot + mybatis + Vue3的前后端分离小demo

    2024-03-18 00:38:04       20 阅读
  2. 【C/C++ 学习笔记】内存

    2024-03-18 00:38:04       22 阅读
  3. 【C语言】等边等腰三角形的判断

    2024-03-18 00:38:04       21 阅读
  4. 【Git】git pull fatal: refusing to merge unrelated histories

    2024-03-18 00:38:04       23 阅读
  5. 【Vue2】v-model

    2024-03-18 00:38:04       19 阅读
  6. Git使用

    Git使用

    2024-03-18 00:38:04      15 阅读
  7. 2024年3月职业健康安全管理体系基础考试真题

    2024-03-18 00:38:04       26 阅读