android - 如何使用 SDK 示例代码从命令行使用 AIDL 工具?

标签 android aidl

我的问题涉及从命令行使用 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 文件生成 .java 文件。 (注意:我将 Windows 环境变量“路径”设置为当前目录。)以下是我尝试过的一些变体:

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

我一定是遗漏了一些简单的东西。令人惊讶的是,尽管我已经在不同的地方看到了这个问题的变体,但我还没有看到关于 AIDL 命令行用法的答案或任何文档(aidl.exe USAGE 信息除外)。有人可以告诉我吗?

谢谢, 马特

最佳答案

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

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

关于android - 如何使用 SDK 示例代码从命令行使用 AIDL 工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179453/

相关文章:

java - 无法使用 Robotium 与屏幕中的所有 TextView 进行交互

android - 使用 Ceylon 编写 Android 应用程序

android - 尝试从命令行执行脚本时出现 Python 语法错误

android - 在主线程外运行时对 Cloud Firestore 进行同步调用

android - AIDL : Incompatible types: Object cannot be converted to MyCustomObject 中的 Parcelize 注释

java - 如何在 MuPDF 中实现页面 curl

Android绑定(bind)服务和AIDL服务

android - Android 服务可以提供两个接口(interface)进行通信吗?

java - 使用 AIDL (Android) 跨进程处理错误的推荐方法

android - 为什么 ITelephony.aidl 有效?