开发者

How do I use AIDL tool from command line using SDK sample code?

开发者 https://www.devze.com 2022-12-18 23:53 出处:网络
My question concerns using aidl.exe (on a Windows system) from the command line.This question has nothing to do with Eclipse, Netbeans, etc.

My question concerns using aidl.exe (on a Windows system) from the command line. This question has nothing to do with Eclipse, Netbeans, etc.

Included with the Android SDK are the following three AIDL definition files:

IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl

located in the following directory:

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

For the sake of simplicity, I copied aidl.exe into the above directory. Then, from a console Window, I successfully used the following two commands to generate .java files:

C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl I开发者_运维知识库RemoteServiceCallback.aidl C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl ISecondary.aidl

Invoking these commands produced the files IRemoteServiceCallback.java and ISecondary.java, respectively. So far so good.

I note that both .aidl files are simple; they include no 'import' statements.

The remaining .aidl file, IRemoteService.aidl, does include the following import statement on line 19:

import com.example.android.apis.app.IRemoteServiceCallback;

The problem arises when I run the AIDL tool on this file:

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

Doing so causes the following error message to be printed in the console window:

IRemoteService.aidl:19: couldn't find import for class com.example.android.apis.app.IRemoteServiceCallback

The AIDL tool evidently could not locate the IRemoteServiceCallback.aidl file in the same directory in which it was running. According to the AIDL tool's "usage" message, there is a command that apparently can be used to resolve this problem:

  -I<DIR>    search path for import statements.

The problem: I have not been able to specify -I in such a way as to avoid the error message and have the AIDL tool generate a .java file from the .aidl file with an 'import' statement. (Note: I set the Windows environment variable 'path' to my current directory.) Here are a few variations I've tried:

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

I must be missing something simple. Surprisingly, even though I've seen variations of this question posted in various places, I have yet to see an answer or any documentation about AIDL command line usage (other than the aidl.exe USAGE info). Can someone clue me in?

Thanks, Matt


You must provide the folder path to the source files, but WITHOUT the path after the base src folder. So, in your case the right command is:

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


It taked 3 hours useless search on google and 1,5 hours search on yandex. The solution is here:

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

You need to add -p/path/to/framework.aidl key


As you mention, there isn't much documentation.

So if you enable verbose build output in Eclipse (under Window > Preferences > Android > Build, I think), you can see in the Console what commands, including aidl and aapt, are executed when the Eclipse plugin does a build.

Alternatively, if you can understand C you could check out the aidl source code in the AOSP.

0

精彩评论

暂无评论...
验证码 换一张
取 消