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