aidl android.mk,AIDL 后端  |  Android 开源项目  |  Android Open Source Project

本文介绍了AIDL的后端,包括Java和NDK后端,以及它们在构建系统中的使用。AIDL的Java后端用于SDK和服务管理,而NDK后端是Android 10的新特性。构建系统分为核心构建系统和aidl_interface,两者处理AIDL文件的方式不同。此外,文章还阐述了不同类型在不同后端的表示,以及如何在Java和C++中实现和注册服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AIDL 后端是生成桩代码的目标。在使用 AIDL 文件时,您始终是采用特定语言在特定的运行时环境中使用这些文件。因此,您应该根据具体情况使用不同的 AIDL 后端。

AIDL 的后端如下所示:

后端

语言

API 表面

构建系统

Java

Java

SDK/SystemApi(稳定*)

全部

NDK

C++

libbinder_ndk(稳定*)

aidl_interface

CPP

C++

libbinder(不稳定)

全部

这些 API 表面是稳定的,但其中许多 API(例如用于服务管理的 API)已预留给内部平台使用,不适用于应用。如需详细了解如何在应用中使用 AIDL,请参阅开发者文档。

NDK 后端是 Android 10 中的新功能。

构建系统

根据不同的后端,可以采用两种不同的方式将 AIDL 编译成桩代码。如需获取有关构建系统的更详细文档,请查阅 Soong 模块参考文档。

核心构建系统

在任何 cc_ 或 java_ Android.bp 模块(或等效的 Android.mk 文件)中,可以将 .aidl 文件指定为源文件。在这种情况下使用的是 AIDL 的 Java/CPP 后端(而不是 NDK 后端),并且使用相应 AIDL 文件的类会自动添加到相应模块中。您可以在这些模块中的 aidl: 组下指定选项(例如 local_include_dirs,用于告知构建系统该模块中 AIDL 文件的根路径)。如需了解详情,请参阅 Soong 模块参考文档中有关构建系统的具体文档。

aidl_interface

请参阅稳定的 AIDL。此构建系统使用的类型必须是结构化类型,也就是直接以 AIDL 表示的类型。这意味着无法使用自定义 parcelable。

类型

您可将 aidl 编译器视为类型的参考实现。创建接口时,您可以通过调用 aidl --lang= ... 查看生成的接口文件。使用 aidl_interface 模块时,也可以在 out/soong/.intermediates// 中查看输出。

Java/AIDL 类型

C++ 类型

NDK 类型

boolean

bool

bool

byte

int8_t

int8_t

char

char16_t

char16_t

int

int32_t

int32_t

long

int64_t

int64_t

float

float

float

double

double

double

String

android::String16

std::string

android.os.Parcelable

android::Parcelable

IBinder

android::IBinder

ndk::SpAIBinder

T[]

std::vector

std::vector

byte[]

std::vector

std::ve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值