Мой вопрос касается использования 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