Android 分发AIDL接口的选项

Android 分发AIDL接口的选项,android,aidl,Android,Aidl,开发人员有哪些选项可以将其AIDL接口分发给其他项目使用 到目前为止,我只能通过将AIDL文件从服务项目复制到客户机项目中来让客户机项目工作。这是可行的,但也意味着客户(可能是其他公司的客户)需要在其代码库中包含我的包结构和源代码 是否有其他打包AIDL接口的方法,允许服务作者在JAR文件之类的工件中提供他们的接口?我尝试只让生成的类对客户端应用程序可用,但客户端不会编译,这让我认为ADK需要访问AIDL文件本身 开发人员有哪些选项可以将其AIDL接口分发给其他项目使用 就我个人而言,我喜欢以烛

开发人员有哪些选项可以将其AIDL接口分发给其他项目使用

到目前为止,我只能通过将AIDL文件从服务项目复制到客户机项目中来让客户机项目工作。这是可行的,但也意味着客户(可能是其他公司的客户)需要在其代码库中包含我的包结构和源代码

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

开发人员有哪些选项可以将其AIDL接口分发给其他项目使用

就我个人而言,我喜欢以烛光的形式接受我的AIDL.:-)

到目前为止,我只能通过将AIDL文件从服务项目复制到客户机项目中来让客户机项目工作

AFAIK,AIDL必须以源代码形式分发

这是可行的,但也意味着客户(可能是其他公司的客户)需要在其代码库中包含我的包结构和源代码

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

他们不应该需要你的源代码来做其他事情。如果您选择在AIDL公开的方法中使用自定义的
Parcelable
类,那么AIDL的用户将需要JAR中这些类的编译版本,如果不是源代码的话。此外,您需要安排为您和您的员工随时提供红牛(或您选择的能量饮料),因为处理AIDL的版本更改已经够烦人的了,更不用说客户端
Parcelable
类的版本更改了

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

是否有其他包装AIDL接口的方法 允许服务作者在工件中提供他们的接口,如 JAR文件?我试着只让生成的类对用户可用 客户端应用程序,但客户端不会编译,这导致我 认为ADK需要访问AIDL文件本身

否。客户端必须在/src目录下使用正确的包名保存.aidl文件的副本。例如,查看Google如何播放服务

这是可行的,但也意味着客户(可能是其他公司的客户)需要在其代码库中包含我的包结构和源代码


是的。

不幸的是,我相信您是对的,AIDL必须作为AIDL分发,并由客户的作者放置在正确的位置。谢谢你的确认。我希望有更优雅的东西,但这也是谷歌建议使用他们的AIDL服务的方式。我不知道新的AAR档案格式。它看起来很有希望,但从目前的信息来看,它似乎仅限于编译的源代码(即JAR中的类文件)和资源/资产。这里没有提到源代码,即使AIDL不是典型的Foo.java意义上的“源代码”。我处理得越多,就越觉得AIDL是安卓系统中考虑较少的领域之一。@spaaarky21:是的,我也没试过。Gradle for Android当然支持AIDL,但我不知道他们是否已经将其扩展到AAR。他们应该,对于像你这样的场景。