我的问题涉及从命令行使用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 信息)。有人可以给我线索吗?
谢谢,马特