开发人员有哪些选项可用于分发其他项目的AIDL接口?
到目前为止,我只能通过将AIDL文件从服务项目复制到客户端项目中来获得客户端项目。这有效,但这也意味着客户(可能在其他公司)需要在我们的代码库中拥有我的包结构和源。
是否有其他方法可以打包AIDL接口,允许服务作者在像JAR文件这样的工件中提供接口?我尝试只将生成的类提供给客户端应用程序,但客户端无法编译,这使我认为ADK需要访问AIDL文件本身。
答案 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。
这有效,但这也意味着客户(可能在其他公司)需要在我们的代码库中拥有我的包结构和来源。
是的。