12

我的问题涉及从命令行使用aidl.exe(在Windows系统上)。这个问题与Eclipse、Netbeans等无关。

Android SDK 包含以下三个 AIDL 定义文件:

IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl

位于以下目录中:

C:\android-sdk-windows\platforms\android-2.1\samples\ApiDemos\src\com\example\android\apis\app

为了简单起见,我将aidl.exe复制到上面的目录中。然后,在控制台窗口中,我成功地使用了以下两个命令来生成 .java 文件:

C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl IRemoteServiceCallback.aidl C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl ISecondary.aidl

调用这些命令分别生成文件 IRemoteServiceCallback.java 和 ISecondary.java。到目前为止,一切都很好。

我注意到两个 .aidl 文件都很简单;它们不包括“导入”语句。

剩余的 .aidl 文件 IRemoteService.aidl 在第 19 行包含以下导入语句:

导入 com.example.android.apis.app.IRemoteServiceCallback;

当我在此文件上运行 AIDL 工具时出现问题:

  C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl IRemoteService.aidl

这样做会导致在控制台窗口中打印以下错误消息:

IRemoteService.aidl:19:找不到类 com.example.android.apis.app.IRemoteServiceCallback 的导入

AIDL 工具显然无法在其运行的同一目录中找到 IRemoteServiceCallback.aidl 文件。根据 AIDL 工具的“使用”消息,有一个命令显然可以用来解决这个问题:

  -I<DIR>    search path for import statements.

问题:我无法指定 -I 以避免出现错误消息,并让 AIDL 工具从 .aidl 文件中生成一个带有“import”语句的 .java 文件。(注意:我将 Windows 环境变量“路径”设置为当前目录。)以下是我尝试过的一些变体:

-Ic:\com\example\android\apis\app
-Ic:/com/example/android/apis/app
-I.\
-I.

我一定错过了一些简单的东西。令人惊讶的是,即使我在不​​同的地方看到了这个问题的变体,我还没有看到关于 AIDL 命令行使用的答案或任何文档(除了aidl.exe USAGE 信息)。有人可以给我线索吗?

谢谢,马特

4

3 回答 3

12

您必须提供源文件的文件夹路径,但不能提供基本 src 文件夹之后的路径。因此,在您的情况下,正确的命令是:

C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl -IC:\Android-project\ApiDemos\src\ IRemoteService.aidl
于 2010-03-01T14:22:24.407 回答
4

在 google 上进行了 3 小时无用的搜索,在 yandex 上进行了 1.5 小时的搜索。解决方案在这里:

http://programmingissues.wordpress.com/2011/07/22/cant-use-aidl-file-in-eclipse-android-project/

您需要添加 -p/path/to/framework.aidl 键

于 2012-07-18T08:38:41.297 回答
3

正如你提到的,没有太多的文档。

因此,如果您在 Eclipse 中启用详细构建输出(我认为在 Window > Preferences > Android > Build 下),您可以在控制台中看到Eclipse 插件执行构建时执行了哪些命令,包括aidl和。aapt

或者,如果您能理解 C,您可以查看 AOSP 中的aidl 源代码。

于 2010-02-01T20:07:24.723 回答