我正在尝试使用一个使用 JNI 的库。
我已经尝试了开发人员提供的示例应用程序,它可以工作。所以我知道这不是图书馆的错误。
我假设我在导入库的过程中做错了:
- 将 .so 文件复制到我的 libs 文件夹中(称为 libjniRTSP.so)
将 jniRTSP.java(总结如下)复制到我的项目中:
public class jniRTSP { private volatile static jniRTSP libRTSP = null; public static jniRTSP getInstance() { if(null == libRTSP) { synchronized(jniRTSP.class) { if(null == libRTSP) { libRTSP = new jniRTSP(); libRTSP.InitProductList(); // DEBUG libRTSP.SetDebugView(1); } } } return libRTSP; } static { try { System.loadLibrary("jniRTSP"); } catch (Exception e) { e.printStackTrace(); } } public native int GetBrandEnableRecorder(); public native int GetBrandEnableLocal(); public native int GetBrandEnableRemote(); ...
然后在我的 onCreate() 中,我尝试调用其中一种方法:
jniRTSP.getInstance().Init(.....)
返回错误:
UnsatisfiedLinkError:找不到本机方法 com.myuniquepackage.jniRTSP.InitProductList:()I
更新(修复):我不只是复制 jniRTSP java 文件,而是复制了包含它的整个包,并保持相同的包名。我不确定这是否修复了它,因为包名称是问题,或者是否因为它需要该包中的其他 java 文件之一。虽然我很确定它是否是一个丢失的文件,但它会在编译时抱怨。