Java 如何在Android Studio中使用.so文件中的方法?
我收到了一个Eclipse项目,我已经成功地将它导入到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
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");
}
}