Hello,

I'm having a bit of trouble on assembling all this, so maybe you can throw
me some pointers on what I might be doing wrong.
I have a third-party library (.so file) that I want to use in my
application. This third-party library comes with a java source file
(there's also a C header file version) with a bunch of native methods to
access the library.

So, here's what I did

1. Added the .so library to the project under
/NativeLibraries/armeabi/libsdk.so
2. Set the library's build action to AndroidNativeLibrary
3. Added the java source file under /JavaSources/libmsg.java
4. Set the file's build action to AndroidJavaSource

After these steps, I created a static helper class to access the java
source file with JNI

    public static class LibAPI
    {
        private static IntPtr _Class = JNIEnv.FindClass(
"com/alk/sdk/AlkMsg" );
        [...]
        public static int HasStarted()
        {
            IntPtr methodId = JNIEnv.GetStaticMethodID( _Class,
"Msg_HasStarted", "()I" );
            return ( JNIEnv.CallStaticIntMethod( jClass, methodId ) );
        }
        [...]

The java source file goes by

package com.alk.sdk;

public class AlkMsg {

    [...]
    public static native int Msg_HasStarted();
    [...]


I compile the whole thing, deploy to device and start debugging. When I
click the button that calls the LibAPI.HasStarted() I get
an Java.Lang.UnsatisfiedLinkError.

What am I doing wrong here? At first I thought that there could be
something wrong with the .so file because it's larger than 1 mb, but
apparently that is not an issue for .so files, only assets.
Should I consider "P/Invoking" the whole thing and drop the java source?
I look forward to hear your thoughts on this, maybe you can throw me some
pointers, as I'm a bit lost at the moment.


Cheers

-- 
Gonçalo Oliveira
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to