为啥不能将 .aidl 放入库项目中?

Posted

技术标签:

【中文标题】为啥不能将 .aidl 放入库项目中?【英文标题】:Why can't a .aidl be placed into a library project?为什么不能将 .aidl 放入库项目中? 【发布时间】:2012-02-09 07:56:28 【问题描述】:

我遇到了一条评论 this answer,其中指出图书馆项目:

    无法保存 .aidl 文件, 不能依赖另一个库项目, 不能持有资产

嗯,这个评论是大约一年半前发表的,我可以非常肯定地告诉你,第 2 项不再正确(September 2010?),因为我有一个完美的工作项目,由一个依赖于另一个库项目的库项目。

所以,我的问题有两个:

    库项目不能保存.aidl文件仍然是真的吗? 如果#1 的答案是肯定的,那么这是什么原因?

顺便说一句,作为一个实验,我尝试将IMarketBillingService.aidl(来自应用内计费示例)放在一个库项目中(还没有任何使用它的东西),并且项目像以前一样构建和运行。所以,如果库项目仍然不可能包含.aidl,那么这一定是更深层次的东西......

【问题讨论】:

【参考方案1】:

答案是“不”。您可以在库项目中使用 AIDL 文件。我在三个不同的项目中使用了这样的设置。不记得确切的时间,但他们在不久前修复了这个问题(可能是当他们将库支持添加到 ADT 时)。它之前不起作用的原因是 ADT 构建器无法识别 AIDL 文件并且没有生成必要的 Java 存根。

【讨论】:

谢谢!事实证明,最近删除了另一个限制:Generate a library project into its own JAR file。请注意,同一页面上的文档自相矛盾,但我刚刚测试了这个新功能,您可以独立从库项目生成 JAR,而不依赖于应用程序项目。 是的,您可以生成一个 JAR。但是,jar 不包含任何资源,因此如果您在库项目中有布局、字符串等,您不能只将 jar 放到您的应用项目中。直接关注 ADT 站点以获取最新信息,文档有时已过时。 sites.google.com/a/android.com/tools/recent sites.google.com/a/android.com/tools/recent 链接的另一个 +1 - 我不知道那个页面。这非常有用。谢谢!

以上是关于为啥不能将 .aidl 放入库项目中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能将本地 C++ 的引用传递给 C++/CLI?

如何将实用程序.java 作为文件夹放入库中,以便可以将其方法用于多个 java 项目?

添加应用内计费库时出错

为啥我不能在 github 中推送还原的提交?

为啥我不能引用我的类库?

为啥我不能将 apache.thrift 导入 IntelliJ 项目?