有什么方法可以使用 EmbeddedNativeLibrary?
Any way to use EmbeddedNativeLibrary?
在 Xamarin Solution
中,我有:
项目1:一个Android
应用项目(应用)。
我有一个使用三个 .so
的旧 Android
应用程序,构建为 AndroidNativeLibrary
。这很有效, .so
被发现了。我想用它做一个图书馆。为此,我创建了一个新的 Library
项目。现在,在我的解决方案中,我有第二个项目:
项目 2:一个 Library
项目 .so
构建为 EmbeddedNativeLibrary
。
这是行不通的。 DLL
不包含 .so
,.so
也不会复制到引用它的 Android 应用程序项目。 (我不知道在构建过程中将它们放在应用程序的 /lib
文件夹中的通常过程是什么)所以 .so 库无处可去,Dalvik
找不到它。我知道如果我直接将它们放在应用程序项目中它会起作用,但这是一个丑陋的解决方案。
在我看来 EmbeddedNativeLibrary
,从名字来看,应该对我的情况有所帮助。但是没有效果。
如何将我的 .so
文件嵌入到 .DLL
Library
或自动复制到应用程序 /lib
目录中?
[编辑]
我之前应该验证过,但是这些库确实包含在APK中。他们只是在 运行 应用程序时找不到。就像丢失或错误引用的库一样。也许还有一个额外的步骤让它们可见?
[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 构建 -> 高级选项卡下,您是为 armeabi 构建还是为 armeabi-v7a 构建?看起来你把库放在了 armeabi 文件夹中。
在 Xamarin Solution
中,我有:
项目1:一个
Android
应用项目(应用)。 我有一个使用三个.so
的旧Android
应用程序,构建为AndroidNativeLibrary
。这很有效,.so
被发现了。我想用它做一个图书馆。为此,我创建了一个新的Library
项目。现在,在我的解决方案中,我有第二个项目:项目 2:一个
Library
项目.so
构建为EmbeddedNativeLibrary
。 这是行不通的。DLL
不包含.so
,.so
也不会复制到引用它的 Android 应用程序项目。 (我不知道在构建过程中将它们放在应用程序的/lib
文件夹中的通常过程是什么)所以 .so 库无处可去,Dalvik
找不到它。我知道如果我直接将它们放在应用程序项目中它会起作用,但这是一个丑陋的解决方案。
在我看来 EmbeddedNativeLibrary
,从名字来看,应该对我的情况有所帮助。但是没有效果。
如何将我的 .so
文件嵌入到 .DLL
Library
或自动复制到应用程序 /lib
目录中?
[编辑]
我之前应该验证过,但是这些库确实包含在APK中。他们只是在 运行 应用程序时找不到。就像丢失或错误引用的库一样。也许还有一个额外的步骤让它们可见?
[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 构建 -> 高级选项卡下,您是为 armeabi 构建还是为 armeabi-v7a 构建?看起来你把库放在了 armeabi 文件夹中。