0

我有一个使用 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。两个不同的制造商...

4

2 回答 2

2

如果您正在构建不同的 ABI,例如 mips、x86、armeabi-v7a,请使用

APP_ABI := all在你的 mk 文件中

但我认为问题不在于那里,因为谷歌有过滤器检查 http://developer.android.com/google/play/filters.html

转到 >> 其他过滤器 >> CPU 架构 (ABI)

于 2013-03-22T04:57:41.270 回答
0

您的本机代码未编译。

如果你使用 eclipse 开发代码,你必须添加 NDK 支持来编译原生代码

于 2014-09-16T09:21:26.940 回答