2010-02-01 47 views
11

我的问题涉及从命令行使用aidl.exe(在Windows系统上)。这个问题无关与Eclipse,Netbeans的,等如何使用SDK示例代码从命令行使用AIDL工具?

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

IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl

位于在以下目录:

C:\ Android的SDK窗口\平台\机器人-2.1 \样品\ ApiDemos \ SRC \ COM \示例\机器人\的API \应用

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

C:\ Android的项目\ ApiDemos的\ src \ COM \例子\机器人\的API \应用> 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以下import语句:

进口com.example.android.apis.app.IRemoteServiceCallback;

,就会出现问题,当我运行本文件中的AIDL工具:

IRemoteService.aidl::19:

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

这样做会导致下面的错误消息,以在控制台窗口被打印couldn找不到类com.example.android.apis.app.IRemoteServiceCallback的导入

AIDL工具显然找不到IRemoteServiceCallback.aidl文件与它运行的同一个目录。按照AIDL工具的“用法”的消息,有,显然可以用来解决此问题的命令:

-I<DIR> search path for import statements. 

的问题:我一直没能以这样的方式,以避免对指定-I错误消息并让AIDL工具使用'import'语句从.aidl文件生成一个.java文件。 (注:我设置Windows环境变量“路径”我的当前目录。)下面是我已经尝试了一些变化:我必须失去了一些东西简单

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

。令人惊讶的是,尽管我已经看到了各种地方发布的这个问题的变体,但我还没有看到有关AIDL命令行用法的答案或任何文档(除了aidl.exe使用信息之外)。有人能告诉我吗?

谢谢, 马特

回答

11

我找到了解决方案:您必须提供源文件的文件夹路径,但不包含基本src文件夹之后的路径。 因此,在您的情况下,正确的命令是: C:\ Android-project \ ApiDemos \ src \ com \ example \ android \ apis \ appl> aidl -IC:\ Android-project \ ApiDemos \ src \ IRemoteService.aidl

+0

我认为这是互联网上唯一记录的地方。谢谢你,你是英雄。 – benkc 2014-04-11 18:47:10

3

正如你提到的,没有太多的文档。因此,如果您在Eclipse中启用了详细的构建输出(在窗口>首选项>安卓>构建中,我认为),您可以在控制台中看到当Eclipse插件构建时执行的命令(包括aidlaapt) 。

另外,如果你能理解C语言,你可以查看AOSP中的aidl源代码。

+0

MMMMM,详细的建立 - 要好得多。谢谢,克里斯托弗 – JohnnyLambada 2010-08-26 00:54:29