[mono-android] 4.2.3 native library DllNotFoundException!
Jonathan Pryor
jonp at xamarin.com
Tue Jun 19 14:51:41 UTC 2012
On Jun 19, 2012, at 8:32 AM, Francesco Colombo wrote:
> Just updated to the last version of M4A version and......my app is broken! :(
>
> I'm using an external reference to a SQL Lite native library, compiled with FTS4 support. It worked like a charm, befrore updating, but NOW I'm getting a System.DllNotFoundException. :(
>
> System.DllNotFoundException: libSQLite3.so
> at (wrapper managed-to-native) AdMaiora.Core.Data.SQLite.SQLite3.Open (string,intptr&) <IL 0x00011, 0x00090>
Diagnostic checks:
1. `unzip -l your.package-Signed.apk`: Do you have:
lib/armeabi/libSQLite3.so
lib/armeabi/libmonodroid.so
lib/armeabi-v7a/libmonodroid.so
2. Is your target device an armeabi-v7a device?
adb shell getprop ro.product.cpu.abi
I need to investigate this further, but what appears to be happening is that Android is now only installing the abi binaries, and not falling back to the abi2 binaries. For example, if your device is armeabi-v7a and your .apk contains lib/armeabi-v7a/libmonodroid.so, it'll extract lib/armeabi-v7a/libmonodroid.so but NOT lib/armeabi/libSQLite3.so. I don't know why this would be happening. :-(
The workaround is easy, though increases space use: add a lib/armeabi-v7a/libSQLite3.so file by updating your .csproj:
<ItemGroup>
<AndroidNativeLibrary Include="libSQLite3.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
Thanks,
- Jon
More information about the Monodroid
mailing list