Java 如何在Android Studio中使用.so文件中的方法?

Java 如何在Android Studio中使用.so文件中的方法?,java,android,android-ndk,java-native-interface,Java,Android,Android Ndk,Java Native Interface,我收到了一个Eclipse项目,我已经成功地将它导入到Android Studio中使用。唯一的问题是,此项目中的类调用了项目附带的.so文件中的某些函数。我已经好几天不能调用这些方法了 这门课很基础: public class Conversions { private static Conversions mCom=null; public static Conversions getInstance(){ if(mCom==null){ mCom=new

我收到了一个Eclipse项目,我已经成功地将它导入到Android Studio中使用。唯一的问题是,此项目中的类调用了项目附带的.so文件中的某些函数。我已经好几天不能调用这些方法了

这门课很基础:

public class Conversions {

  private static Conversions mCom=null;

  public static Conversions getInstance(){
    if(mCom==null){
        mCom=new Conversions();
    }
    return mCom;
  }

  public native int StdToIso(int itype,byte[] input,byte[] output);
  public native int IsoToStd(int itype,byte[] input,byte[] output);
  public native int GetDataType(byte[] input);
  public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk);

  static {
    System.loadLibrary("conversions");
  }
}
错误消息是:

cannot resolve corresponding JNI function ....
No JNI_OnLoad found in /data/app-lib/com.example.fpdemo-1/libfgtitinit.so 0x4cc91c70, skipping init
本机方法位于my中的几个.so文件中:

jniLibs > armeabi > libconversions.so
jniLibs > armeabi > libfgtitinit.so
但由于某些原因,我无法读取本机文件。我认为这可能是一个构建问题或环境问题。我的Gradle生成文件如下所示:

android {
    compileSdkVersion 17
    buildToolsVersion "24.0.2"

    defaultConfig {
        applicationId "com.example.fpdemo"
        minSdkVersion 12
        targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
   compile 'com.android.support:support-v4:18.0.0'
   compile files('libs/fgtitdevice.jar')
}

尝试替换此选项我希望它能起作用

检查我的答案以包括
*。因此库
可能与刚才尝试的@Aspicas重复,但不起作用编辑您的问题并添加您在libconversions.soi中实现的C/C++方法定义。我没有创建文件,但请确保这些函数存在。我认为gradle或我的java类没有正确地读入它@Robert
public class Conversions {

  private static Conversions mCom=null;

  public static Conversions getInstance(){
    if(mCom==null){
        mCom=new Conversions();
    }
    return mCom;
  }

  public native int StdToIso(int itype,byte[] input,byte[] output);
  public native int IsoToStd(int itype,byte[] input,byte[] output);
  public native int GetDataType(byte[] input);
  public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk);

  static {
    System.loadLibrary("conversions");
    System.loadLibrary("libfgtitinit");
  }
}