我的问题是从命令行使用aidl.exe(在Windows系统上)。这个问题与Eclipse,Netbeans等无关。
Android SDK包含以下三个AIDL定义文件:
IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl
位于以下目录中:
C:\ Android的SDK窗口\平台\机器人-2.1 \样品\ ApiDemos \ SRC \ COM \示例\机器人\的API \应用
为简单起见,我将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行包含以下import语句:
import 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环境变量'path'设置为我当前的目录。)以下是我尝试过的一些变体:
-Ic:\com\example\android\apis\app
-Ic:/com/example/android/apis/app
-I.\
-I.
我一定很遗憾。令人惊讶的是,即使我已经看到在各个地方发布此问题的变体,我还没有看到答案或任何有关AIDL命令行使用的文档(除了aidl.exe使用信息)。有人能告诉我吗?
谢谢, 马特
答案 0 :(得分:11)
您必须提供源文件的文件夹路径,但不包括基本src文件夹之后的路径。 因此,在您的情况下,正确的命令是:
C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl -IC:\Android-project\ApiDemos\src\ IRemoteService.aidl
答案 1 :(得分:4)
google需要3个小时无用搜索,yandex需要1.5小时搜索。解决方案在这里:
http://programmingissues.wordpress.com/2011/07/22/cant-use-aidl-file-in-eclipse-android-project/
您需要将-p / path /添加到/ framework.aidl键
答案 2 :(得分:3)
正如您所提到的,没有太多文档。
因此,如果您在Eclipse中启用详细构建输出(在Window&gt; Preferences&gt; Android&gt; Build,我认为),您可以在控制台中看到哪些命令,包括aidl
和aapt
,在Eclipse插件执行构建时执行。
或者,如果你能理解C,你可以查看AOSP中的aidl源代码。