2010-02-01 54 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