Я создал библиотеку как динамическую общую библиотеку (Android) (я использую Visual Studio 2022 v17.9.6).
Я собираю библиотеку для четырех различных платформ, доступных в Visual Studio (x86, x64, ARM, ARM64), добавляю полученные файлы .so в следующие папки в моем проекте xamarin.Android (устанавливая действие сборки AndroidNativeLibrary):
- .so из x86 добавлен в /lib/x86.
- .so из x64 добавлен в /lib/x64.
.so из ARM добавлен в /lib/armeabi-v7a. - .so из ARM64 добавлен в /lib/arm64-v8a.
Код: Выделить всё
lib\arm64-v8a\libRootUtil.so
arm64-v8a
Always
lib\armeabi-v7a\libRootUtil.so
armeabi-v7a
Always
lib\x86_64\libRootUtil.so
x86_64
Always
lib\x86\libRootUtil.so
x86
Always
Код: Выделить всё
[DllImport("libRootUtil_v8l")]
public extern static int CheckRootAccessMethod1();
Но с устройством с архитектурой Armv8l (например : Samsung Galaxy Tab A6, я получаю следующее исключение:
{System.DllNotFoundException: libRootUtil build: type:member:(null)
at (управляемая-собственная оболочка) CorrespondenceApp.Droid.MainActivity. CheckRootAccessMethod1()
Примечание. Я получаю архитектуру, используя: Java.Lang.JavaSystem.GetProperty("os.arch")
Как я могу решить эту проблему?
Заранее спасибо.
Я попытался добавить еще одну папку с именем /lib/arm64-v8l и добавить тот же файл .so, полученный из ARM64. и добавьте для него новый элемент в файл .csproj:
Код: Выделить всё
lib\arm64-v8l\libRootUtil.so
arm64-v8l
Always
Подробнее здесь: https://stackoverflow.com/questions/785 ... ure-armv8l
Мобильная версия