分发AIDL接口的选项

时间:2014-01-07 18:19:11

标签: android aidl

开发人员有哪些选项可用于分发其他项目的AIDL接口?

到目前为止,我只能通过将AIDL文件从服务项目复制到客户端项目中来获得客户端项目。这有效,但这也意味着客户(可能在其他公司)需要在我们的代码库中拥有我的包结构和源。

是否有其他方法可以打包AIDL接口,允许服务作者在像JAR文件这样的工件中提供接口?我尝试只将生成的类提供给客户端应用程序,但客户端无法编译,这使我认为ADK需要访问AIDL文件本身。

2 个答案:

答案 0 :(得分:1)

  

开发人员有哪些选项可用于分发其他项目的AIDL接口?

就个人而言,我喜欢以糖果形式收到我的AIDL。 : - )

  

到目前为止,我只能通过将AIDL文件从服务项目复制到客户端项目中来获得客户端项目。

AFAIK,AIDL必须以源格式分发。

  

这有效,但这也意味着客户(可能在其他公司)需要在我们的代码库中拥有我的包结构和来源。

他们只需要您的AIDL文件以及将它们放入的Java包的知识。这是您发布的API的一部分,与URL和Web服务定义是Web服务的API的一部分没有区别。

他们不应该为其他任何东西需要你的源代码。如果您选择在AIDL公开的方法中使用自定义Parcelable类,则AIDL的用户将需要JAR中这些类的编译版本(如果不是源代码)。此外,您需要安排红牛(或您选择的能量饮料)随时为您和您的员工提供服务,因为处理AIDL的版本更改非常烦人,更不用说客户端版本的更改{{ 1}}类。

我还没有尝试通过Gradle for Android通过AAR打包的Android库项目发布AIDL和代码。一旦这个工作(可能或可能不是“现在”),它至少允许您将AIDL和相关的编译Parcelable代码捆绑到一个工件中,这将有助于版本控制问题。 OTOH,AAR包现在只能由Gradle for Android使用(我认为最新版本的Maven插件),而不是Eclipse。

答案 1 :(得分:0)

  

是否有其他方法可以打包AIDL接口   允许服务作者在类似的工件中提供他们的接口   一个JAR文件?我尝试只将生成的类提供给a   客户端应用程序,但客户端将无法编译,这导致我   认为ADK需要访问AIDL文件本身。

没有。客户端必须使用正确的包名称将.aidl文件的副本保存在/ src目录下。例如,请参阅Google Play服务requires you to use IInAppBillingService.aidl

  

这有效,但这也意味着客户(可能在其他公司)需要在我们的代码库中拥有我的包结构和来源。

是的。