使用 AIDL 编写 Android 服务时如何为客户端分发自定义类

Posted

技术标签:

【中文标题】使用 AIDL 编写 Android 服务时如何为客户端分发自定义类【英文标题】:How to distribute custom classes for clients when writing Android service with AIDL 【发布时间】:2015-01-13 15:17:11 【问题描述】:

我正在编写 android 服务应用程序。客户端绑定到服务,然后调用远程函数(使用 AIDL 生成的接口)并返回结果。我知道我可以使用任意类的对象(继承自 Parcelable 并实现 Creator 接口)作为参数或返回值。客户端和服务必须使用相同的“接口参数”类。问题是如何向客户发布和分发 .aidl 文件和这样的“共享”类集?这些类必须是公共 API 的一部分。我看到的唯一方法是创建一个包含客户端和服务器使用的所有类的“依赖”库,并让客户端在他们的项目中使用它。这是一种常见的方法吗?

【问题讨论】:

【参考方案1】:

我看到的唯一方法是创建一个包含所有类的“依赖”库 由客户端和服务器使用,并让客户端在他们的 项目。这是一种常见的方法吗?

没错。只需将所有类和您的 AIDL 文件打包到该库中即可将其提供给您的客户。客户需要做的唯一一件事就是将您的 AIDL 文件的副本放入他们的项目中,这样就可以构建服务代理实现。

Google 这样做是为了他们的应用内结算库。 Here is a description 他们建议如何使用它。

【讨论】:

以上是关于使用 AIDL 编写 Android 服务时如何为客户端分发自定义类的主要内容,如果未能解决你的问题,请参考以下文章

加入不和谐服务器时如何为特定成员添加角色

在Android 6中打开wifi时如何为任何应用程序强制使用移动数据

android 浅谈Aidl 通讯机制

当您只知道RGB格式的颜色时如何为颜色编写css [重复]

6.2Android硬件访问服务编写系统代码

服务器更改时如何为客户端更新 protobuf 文件