xamarin - 有什么方法可以使用EmbeddedNativeLibrary吗?

标签 xamarin android-native-library

在 Xamarin 解决方案中,我有:

  • 项目 1:Android 应用程序项目(应用程序)。 我有一个旧的 Android 应用程序,使用三个 .so,构建为 AndroidNativeLibrary。这很有效,并且找到了 .so 。我想用它做一个图书馆。因此,我创建了一个新的 Library 项目。现在,在我的解决方案中,我有第二个项目:

  • 项目 2:一个 Library 项目,其中 .so 构建为 EmbeddedNativeLibrary。 这是行不通的。 DLL 不包含 .so,也不会将 .so 复制到引用它的 Android 应用程序项目中。 (我不知道在构建过程中将它们放入应用程序的 /lib 文件夹中的通常过程是什么)因此 .so 库无处可去,Dalvik没有找到它。我知道如果我直接将它们放入应用程序项目中就会起作用,但这是一个丑陋的解决方案。

在我看来,从名称来看,EmbeddedNativeLibrary应该对我的情况有所帮助。但没有任何效果。

如何将我的 .so 文件嵌入 .DLL Library 或自动复制到应用程序 /lib 目录?

[编辑]

我之前应该已经验证过,但是这些库确实包含在 APK 中。只是在运行应用程序时找不到它们。就像丢失或错误引用的库一样。也许需要一个额外的步骤才能使它们可见?

They are there for the proper ABI

[Mono] DllImport attempting to load: 'libffmpeg.so'.

[Mono] DllImport error loading library '/storage/sdcard0/Android/data/com.pure.ffmpeg/
files/.__override__/libffmpeg.so': 'Cannot load library:
load_library[1093]: Library '/data/data/com.pure.ffmpeg/lib//storage/sdcard0/Android/
data/com.pure.ffmpeg/files/.__override__/libffmpeg.so' not found'.

[Mono] DllImport error loading library
 '/storage/sdcard0/Android/data/com.pure.ffmpeg/files/.__override__/libffmpeg.so': 
'Cannot load library: load_library[1093]: Library '/data/data/com.pure.ffmpeg/
lib//storage/sdcard0/Android/data/com.pure.ffmpeg/files/.__override__/libffmpeg.so'
 not found'.

[Mono] DllImport error loading library 'libffmpeg.so': 
'Cannot load library: 
load_library[1093]: Library '/data/data/com.pure.ffmpeg/lib/libffmpeg.so' not found'.

[Mono] DllImport error loading library 'libffmpeg.so': 'Cannot 
load library: load_library[1093]: Library '/data/data/com.pure.ffmpeg/lib/libffmpeg.so' not found'.

[Mono] DllImport error loading library 'libffmpeg.so': 'Cannot 
load library: load_library[1093]: Library '/data/data/com.pure.ffmpeg/lib/libffmpeg.so' not found'.

[Mono] DllImport unable to load library 'Cannot load library: load_library[1093]: 
Library '/data/data/com.pure.ffmpeg/lib/libffmpeg.so' not found'.

最佳答案

在您的 Android Build -> Advanced 选项卡下,您是为armeabi 构建还是为armeabi-v7a 构建?看来您将库放在了armeabi 文件夹中。

关于xamarin - 有什么方法可以使用EmbeddedNativeLibrary吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700644/

相关文章:

安卓 4.x。通过 apk 部署 native 库并从其他应用程序加载

android - 如何从 VM 内的 android 模拟器访问 localhost?

android - 谷歌播放 : This release is not compliant with the Google play 64-bit requirement

c# - Xamarin IOS 对 Base64 图像进行编码/解码

xamarin - 内容页面的顶部是否始终有一个标题区域?

android - 修复旧 Android 版本的 PDFium 崩溃或包含自己的库

android - 如何允许特定 native 库的特定 ABI?

android - 64 位 android,32 位应用程序与 32 位 native 库

Android Xamarin : Open file from Storage (with path)

c# - 在共享库 Xamarin c# 中读取文件