Как использовать инструмент AIDL из командной строки, используя пример кода SDK? - PullRequest
11 голосов
/ 01 февраля 2010

Мой вопрос касается использования aidl.exe (в системе Windows) из командной строки. Этот вопрос не имеет ничего общего с Eclipse, Netbeans и т. Д.

В комплект Android SDK входят следующие три файла определения AIDL:

IRemoteService.aidl IRemoteServiceCallback.aidl ISecondary.aidl

находится в следующем каталоге:

C: \ Android, СДК-окна \ платформы \ Android, 2.1 \ Samples \ ApiDemos \ SRC \ COM \ например \ Android \ APIs \ приложение

Ради простоты я скопировал aidl.exe в указанную выше директорию. Затем из окна консоли я успешно использовал следующие две команды для создания файлов .java:

C: \ Android-проект \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl IRemoteServiceCallback.aidl C: \ Android-проект \ ApiDemos \ src \ com \ example \ android \ apis \ app> aidl ISecondary.aidl

При вызове этих команд были созданы файлы IRemoteServiceCallback.java и ISecondary.java соответственно. Пока все хорошо.

Замечу, что оба файла .aidl просты; они не содержат операторов «import».

Оставшийся файл .aidl, IRemoteService.aidl, содержит следующую инструкцию импорта в строке 19:

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 сгенерировал файл .java из файла .aidl с оператором import. (Примечание: я установил переменную окружения Windows 'path' для моего текущего каталога.) Вот несколько вариантов, которые я пробовал:

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

Я, должно быть, упускаю что-то простое. Удивительно, но, хотя я видел варианты этого вопроса, размещенные в разных местах, мне еще предстоит увидеть ответ или любую документацию об использовании командной строки AIDL (кроме информации об ИСПОЛЬЗОВАНИИ aidl.exe). Может кто-нибудь подсказать мне?

Спасибо, Matt

Ответы [ 3 ]

11 голосов
/ 01 марта 2010

Вы должны указать путь к папке с исходными файлами, но БЕЗ пути после базовой папки src. Итак, в вашем случае правильная команда:

C:\Android-project\ApiDemos\src\com\example\android\apis\app>aidl -IC:\Android-project\ApiDemos\src\ IRemoteService.aidl
4 голосов
/ 18 июля 2012

Это заняло 3 часа бесполезного поиска в Google и 1,5 часа поиска в Яндексе. Решение здесь:

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

Вам необходимо добавить ключ -p / path / to / framework.aidl

3 голосов
/ 01 февраля 2010

Как вы упоминаете, документации не так много.

Таким образом, если вы включите подробный вывод сборки в Eclipse (в меню «Окно»> «Настройки»> «Android»> «Сборка», я думаю), вы увидите в консоли, какие команды, включая aidl и aapt, выполняются при подключении к Eclipse делает сборку.

В качестве альтернативы, если вы понимаете C, вы можете проверить исходный код aidl в AOSP.

...