Как использовать инструмент AIDL из командной строки с использованием кода примера SDK?

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

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

IRemoteService.aidl  IRemoteServiceCallback.aidl  ISecondary.aidl

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

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

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

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

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

Я отмечаю, что оба файла .aidl просты; они не содержат никаких "импортных" заявлений.

В оставшемся файле .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 "путь" в мой текущий каталог.) Вот несколько вариантов, которые я пробовал:

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

Мне нужно пропустить что-то простое. Удивительно, но, несмотря на то, что я видел варианты этого вопроса, размещенные в разных местах, мне еще предстоит увидеть ответ или любую документацию об использовании командной строки AIDL (кроме информации о файле utill.exe USAGE). Может кто-нибудь подскажет мне?

Спасибо, Matt

Ответ 1

Я нашел решение: вы должны указать путь к исходным файлам, но БЕЗ пути после базовой папки src. Итак, в вашем случае правильная команда: C:\Android-проект\ApiDemos\src\com\example\android\apis\app > helpl -IC:\Android-проект\ApiDemos\src\IRemoteService.aidl

Ответ 3

Как вы упомянули, документации недостаточно.

Итак, если вы включите подробный вывод сборки в Eclipse (в окне Window > Preferences > Android > Build, я думаю), вы можете увидеть в консоли, какие команды, включая aidl и aapt, выполняются, когда плагин Eclipse делает сборку.

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