Использование собственных библиотек
Xamarin.Android поддерживает использование собственных библиотек с помощью стандартного механизма PInvoke. Вы также можете привязать к APK-файлу дополнительные собственные библиотеки, которые не являются частью операционной системы.
Чтобы развернуть собственную библиотеку с приложением Xamarin.Android, добавьте в проект двоичный файл библиотеки и задайте для его действия сборки значение AndroidNativeLibrary.
Чтобы развернуть собственную библиотеку с проектом библиотеки Xamarin.Android, добавьте в проект двоичный файл библиотеки и задайте для его действия сборки значение EmbeddedNativeLibrary.
Так как Android поддерживает несколько бинарных интерфейсов приложений (ABI), Xamarin.Android должно знать, для какого ABI создана собственная библиотека. Это можно сделать двумя способами:
- Сканирование пути
- Использование
AndroidNativeLibrary/Abi
элемента в файле проекта
При сканировании пути имя родительского каталога собственной библиотеки используется для указания целевого ABI библиотеки. Таким образом при добавлении lib/armeabi/libfoo.so
к проекту ABI будет сканироваться как armeabi
.
Или же вы можете отредактировать файл вашего проекта, чтобы явно указать используемый ABI:
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi</Abi>
</AndroidNativeLibrary>
</ItemGroup>
Дополнительные сведения об использовании собственных библиотек см. в статье Взаимодействие с собственными библиотеками.
Отладка машинного кода в Visual Studio
Если вы используете Visual Studio 2019 или Visual Studio 2017, вам не нужно изменять файлы проекта, как описано выше. Вы можете выполнять сборку и отладку C++ в решении Xamarin.Android, добавив ссылку на проект на C++ Динамическая общая библиотека (Android).
Чтобы выполнить отладку машинного кода C++ в вашем проекте, выполните указанные ниже действия.
- Дважды щелкните пункт Свойства проекта и выберите страницу Параметры Android.
- Прокрутите вниз до пункта Параметры отладки.
- В раскрывающемся меню Отладчик выберите C++ (вместо .NET (Xamarin), который задан по умолчанию).