问题
I have a xamarin android project (VS2015) which I added a Android bindings library project to to use a java lib. The wrapper works fine and I can call the classes/methods in my application project. However one of the java classes depends on
armeabi/libjnisgfplib.so
I have tried adding to both /Assets and /libs within my application. BuildAction = AndroidNativeLibrary, Copy = Always. Yet it can't find the lib and I keep getting.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.company-1/base.apk"],nativeLibraryDirectories=[/data/app/com.company-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libjnisgfplib.so"
I have tried Java.Lang.JavaSystem.LoadLibrary("libjnisgfplib");
before calling the class but I receive the same exeption.
How can I add libjnisgfplib.so to my project so the binding library jar can find it?
回答1:
So it's a total mastery to me why this worked but changing the name from
libjnisgfplib.so to jnisgfplib.so
worked. I am assuming something about it being lib/libjnis was throwing it off, but lib/jnis is fine.
回答2:
Have you tried defining your .so file as an AndroidNativeLibrary using armeabi?
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libjnisgfplib.so">
<Abi>armeabi</Abi>
</AndroidNativeLibrary>
</ItemGroup>
http://developer.xamarin.com/guides/android/advanced_topics/using_native_libraries/
回答3:
Try using libs\armeabi-v7a\libjnisgfplib.so
. It solved the same problem I was having.
来源:https://stackoverflow.com/questions/31146327/adding-so-to-xamarin-android-binding-library