#ipc #xamarin.android
#ipc #xamarin.android
Вопрос:
Не будучи достаточно терпеливым для книги Mono для Android, я начал изучать конструкции программирования Android и переводить их в инфраструктуру Mono. Похоже, что большую часть времени хорошие люди в Xamarin и я думаем в том же духе, поэтому прогресс был относительно безболезненным, но в вопросе AIDL я застрял. Был ли реализован AIDL? Если да, то как я могу его использовать? Если нет, то каков рекомендуемый способ использования IPC?
Ответ №1:
Наконец-то поддерживаются AIDL. Чтобы использовать их, добавьте файлы aidl в свой проект и задайте для действия сборки значение AndroidInterfaceDefinition. Xamarin.Android будет генерировать cs-файлы, которые компилируются вместе с вашим исходным кодом, чтобы вы могли использовать интерфейсы aidl в своем коде на c #. VS2012 по-прежнему помечает их как неизвестные / ошибки в коде, но, в конце концов, код компилируется и работает.
Ответ №2:
К сожалению, AIDL в настоящее время не поддерживается. Он поддерживается только через поддержку взаимодействия Java; то есть вам нужно:
- Запишите свои
.aidl
файлы. - Скомпилируйте
.aidl
файлы в.java
файлы (возможно, как этап предварительной сборки?). - Включите сгенерированные
.java
файлы в свою сборку, добавив их в проект и установив для их действия сборки значение AndroidJavaSource.
Конечно, для parcel
s вам нужно будет реализовать them…in Java, и для сервисов вам также нужно будет написать некоторый Java-код.
Документация по встроенной поддержке взаимодействия Java также может быть полезна.
В целом, не очень элегантно. Не сложно, но и не элегантно.
Следовательно, рекомендуемый способ выполнения IPC — использовать Intents , BroadcastReceivers и ContentProviders (в зависимости от потребностей вашего IPC) и избегать использования участков; вместо этого используйте Strings и другие встроенные типы.
Комментарии:
1. Это больше не так, xamarin теперь поддерживает файлы aidl, см. Ответ @MichalDobrodenka