我有一个使用 Vuforia 增强现实 SDK 的已发布应用程序。对于我所有的设备和大多数用户来说,该应用程序的使用都没有问题。但是,我收到了一些来自用户的 UnsatisfiedLinkErrors ACRA 自动报告。我不确定如何进一步诊断。
在主要活动的静态 {} 块中,我有以下代码:
static {
loadLibrary("QCAR");
loadLibrary("MYLIB");
}
没有问题..然后我还声明了一堆本机侧函数,其中第一个是:
public native void setX(int x);
Java_domain_mine_MainActivity_setX(JNIEnv *env, jobject, jint x) {
在 MainActivity 的 onCreate() 方法中,会执行少量与 JNI 无关的代码,然后第一个 JNI 调用 setX(x) 会引发 UnsatisfiedLinkErrors 异常。
现在正如我所说,这段代码对我和我的大多数用户来说运行良好,所以我认为上面的代码是可以的。在这种情况下,我能否得出 100% 的结论,即带有 setX 函数的库没有正确加载?或者这是否意味着库还没有完成加载?
我假设加载库的静态 {} 调用在主线程上运行,因此对 setX 的调用应该在 loadLibrary 调用之后进行,因此库将完成加载尝试,失败或成功但不是他们的情况仍然在另一个线程上初始化。
有没有其他人遇到过类似的问题,如果有,您是如何处理的?
顺便说一句,我在有这个问题的设备上看不到任何相似之处。一个是 2.3.6,另一个是 4.1.1。两个不同的制造商...