小编luc*_*g3r的帖子

在本地复制和解决Android java.lang.unsatisfiedLinkError

我和一个朋友一起创建了一个Android应用来组织学校成绩。该应用程序可以在我的设备和大多数用户设备上正常运行,但是崩溃率超过3%,这主要是由于java.lang.UnsatisfiedLinkErrorAndroid 7.0、8.1和9版本所发生的。

我已经在手机和包括所有架构在内的多个仿真器上测试了该应用程序。我将应用程序作为android-app-bundle上传到应用程序商店,并怀疑这可能是问题的根源。

我在这里有点迷茫,因为我已经尝试了好几件事,但是到目前为止,我既不能减少出现的次数,也无法在任何设备上重现它。任何帮助将不胜感激。

我发现此资源指出Android有时无法解压缩外部库。因此,他们创建了一个ReLinker库,该库将尝试从压缩的应用程序中获取库:

不幸的是,这并没有减少由于导致的崩溃数量java.lang.UnsatisfiedLinkError。我继续在线研究并找到了这篇文章,这表明问题出在64位库中。因此,我删除了64位库(该应用程序仍可在所有设备上运行,因为64位架构也可以执行32位库)。但是,错误仍然会以与以前相同的频率发生。

通过google-play-console,我得到了以下崩溃报告:

java.lang.UnsatisfiedLinkError: 
at ch.fidelisfactory.pluspoints.Core.Wrapper.callCoreEndpointJNI (Wrapper.java)
at ch.fidelisfactory.pluspoints.Core.Wrapper.a (Wrapper.java:9)
at ch.fidelisfactory.pluspoints.Model.Exam.a (Exam.java:46)
at ch.fidelisfactory.pluspoints.SubjectActivity.i (SubjectActivity.java:9)
at ch.fidelisfactory.pluspoints.SubjectActivity.onCreate (SubjectActivity.java:213)
at android.app.Activity.performCreate (Activity.java:7136)
at android.app.Activity.performCreate (Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3063)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1823)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:198)
at android.app.ActivityThread.main (ActivityThread.java:6729)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:876)
Run Code Online (Sandbox Code Playgroud)

Wrapper.java …

java java-native-interface android unsatisfiedlinkerror android-app-bundle

23
推荐指数
1
解决办法
443
查看次数

如何将 uint8_t * 转换为 jbyteArray jni android

我正在开发一个使用一些 C/C++ 代码的 Android 库。

我显然有某种编码错误,只会在运行时出错。

错误:JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0x7d61e62000

这是我用来调用 C 代码的 JNI 代码。

JNIEXPORT jbyteArray JNICALL
Java_com_comp_complibrary_api_initializeProduct(JNIEnv *env, jobject 
                                                    instance,
                                                    jbyteArray buffer_) {
    jbyte *buffer = env->GetByteArrayElements(buffer_, NULL);

    jbyteArray rv = (jbyteArray) initializeProduct((uint8_t *) buffer);

    env->ReleaseByteArrayElements(buffer_, buffer, 0);

    return rv;
}
Run Code Online (Sandbox Code Playgroud)

initializeProduct返回一个uint8_t *.

如果我理解正确,那么我应该能够将返回值转换为 a jbyteArray,然后能够将其分配给byte[]我的一个 java 类中的 a。然而,这种情况并非如此。

byte[] defend = (byte[]) initializeProduct(bufferByteArray);
Run Code Online (Sandbox Code Playgroud)

您会注意到,当我将 1 作为参数传递给 时, ajbyteArray可以转换为 a 。单步执行 C 代码我可以确认这是真的。 …

java java-native-interface android

5
推荐指数
1
解决办法
4084
查看次数

低功耗蓝牙配对与未配对通信

据我了解,蓝牙低功耗通信可以在配对或不配对的情况下建立。这是在移动开发的背景下,更具体地说是 Android,但我相信 iOS 或多或少是相同的。

是否有一种情况会选择一种而不是另一种?目的是什么?从技术上讲,什么是配对通信,什么是非配对通信?

我已经涉足了一些差异,甚至制作了一些与 BLE 相关的仅演示应用程序,但我还没有找到明确的解释,如果我正在做的事情实际上被认为是配对的。

编辑:

我问这个问题的原因是我相信我希望加密未配对的 BLE 连接。在某些情况下,基本上是我的主要用例,移动设备可能希望在一天中的不同时间随机连接到几个不同的外围设备,而物理上接受配对请求的过程似乎是不必要的,而且非常耗时。“随机”我的意思是,如果我的公寓周围散落着十几个,我会从一个身边走过,而我个人不知道具体是哪一个,而无需亲自检查。我不知道第一次走进房间时必须手动配对每个设备,如果我有 100 个设备,那将是疯狂的。请注意,这些设备不一定必须同时连接,但可以。另请注意,我了解这不是

bluetooth bluetooth-lowenergy android-bluetooth ios-bluetooth

2
推荐指数
1
解决办法
1127
查看次数