gpt4 book ai didi

java - 调用 native 库时 Android 6 Marshmallow 崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:19 24 4
gpt4 key购买 nike

我的应用使用原生库,从 Android 2.2 到 5.1 都没有问题

但在 Android 6 Marshmallow 应用程序崩溃并出现错误:E/AndroidRuntime(1602): java.lang.UnsatisfiedLinkError: No implementation found for int com.ipc.sdk.FSApi.Init() (tried Java_com_ipc_sdk_FSApi_Init and Java_com_ipc_sdk_FSApi_Init__) at com .ipc.sdk.FSApi.Init(原生方法)

如何修复崩溃?

更新FSApi.java

   package com.ipc.sdk;
public class FSApi
{
...
public static native int Init();
...
static {
try{
System.loadLibrary("IOTCAPIs");
}catch(UnsatisfiedLinkError ule)
{
}
try{
System.loadLibrary("RDTAPIs");
}catch(UnsatisfiedLinkError ule){
}
try{
System.loadLibrary("iconv");
System.loadLibrary("FSApi");
}catch(UnsatisfiedLinkError ule){
}
}
}

在 MainActivity 中我调用:

FSApi.Init();

如果我评论调用:

// FSApi.Init();

没有崩溃。这意味着 native 库加载成功。我也在 logcat 中收到错误:

No implementation found for int com.ipc.sdk.FSApi.Init() (tried Java_com_ipc_sdk_FSApi_Init and Java_com_ipc_sdk_FSApi_Init__) at com.ipc.sdk.FSApi.Init(Native Method)

看起来 Marshmallow 试图在库中查找 Java_com_ipc_sdk_FSApi_Init 或 Java_com_ipc_sdk_FSApi_Init__,但没有成功。但是如果我在文本编辑器中打开 .so,我会找到 Java_com_ipc_sdk_FSApi_Init!

只有在同时存在两个条件时才会出现问题:1. list 中的 android:targetSdkVersion="23"2. 设备 Android 6 Marshmallow。

在 android:targetSdkVersion="22"和 Android 6 Marshmallow 上不会崩溃,对于 android:targetSdkVersion="23"和 Marshmallow 之前的设备也不会崩溃。

最佳答案

我在使用 Android 版 Foscam SDK 时遇到了同样的问题。

如@135 所说,您只需将targetSdkVersion 更改为21。这不是最好的解决方案,但可以正常工作。

如果我找到另一种解决方法,我将更新此答案。

关于java - 调用 native 库时 Android 6 Marshmallow 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com