Использование AIDL с Mono для Android - PullRequest
4 голосов
/ 24 октября 2011

Не терпеливо относиться к книге Mono для Android. Я начал изучать программные конструкции Android и переводить их в инфраструктуру Mono. Похоже, что в большинстве случаев хорошие люди в Xamarin и я думаю в том же духе, поэтому прогресс был относительно безболезненным, но в вопросе AIDL я застрял. Был ли реализован AIDL? Если так, как я могу использовать это? Если нет, каков рекомендуемый способ использования IPC?

Ответы [ 2 ]

6 голосов
/ 11 декабря 2013

AIDL наконец поддерживаются. Чтобы использовать их, добавьте файлы aidl в ваш проект и установите Build Action на AndroidInterfaceDefinition. Xamarin.Android будет генерировать cs-файлы, которые компилируются вместе с вашим исходным кодом, поэтому вы можете использовать вспомогательные интерфейсы в вашем коде на c #. VS2012 по-прежнему помечает их как неизвестные / ошибки в коде, но в конце код компилируется и работает.

4 голосов
/ 24 октября 2011

AIDL, к сожалению, в настоящее время не поддерживается. Поддерживается только через Поддержка взаимодействия с Java ; то есть вам нужно:

  1. Напишите свои .aidl файлы.
  2. Скомпилируйте .aidl файлы в .java файлы (возможно, в качестве шага перед сборкой?).
  3. Включите сгенерированные файлы .java в свою сборку, добавив их в проект и установив для их действия сборки AndroidJavaSource .

Конечно, для parcel s вам нужно будет реализовать их ... на Java, а для сервисов вам также потребуется написать некоторый код Java.

Документация по Поддержка нативного взаимодействия с Java также может быть полезна.

В целом, не очень элегантно. Не сложно, но и не элегантно.

Следовательно, рекомендуемый способ выполнения IPC - использовать Intents, BroadcastReceivers и ContentProviders (в зависимости от потребностей вашего IPC) и избегать использования посылок; вместо этого используйте Strings и другие встроенные типы.

...