java.lang.UnsatisfiedLinkError:找不到布尔值的实现

Fah*_*aza 6 java-native-interface android unsatisfiedlinkerror

我在项目中使用“.so”文件,但它给出以下错误“ java.lang.UnsatisfiedLinkError:未找到布尔值的实现”,我已经尝试使用 Cygwin 重新创建“.so”并将其放入jniLibs文件夹中并使用 create一罐,但它给出了同样的错误。

但相同的“.so”文件正在我现有的项目中工作。我尝试了很多方法,但根本不起作用,我该怎么办?

com.amaze.filemanager E/art:找不到布尔值 com.amaze.filemanager.scanner.SignatureLib.InitScanner(java.lang.String, java.lang.String) 的实现(尝试过 Java_com_amaze_filemanager_scanner_SignatureLib_InitScanner 和 Java_com_amaze_filemanager_scanner_SignatureLib_InitScanner__Ljava_lang_String_2Ljava_lang_String_2) 12- 19 11:47 :07.463 4579-4934/com.amaze.filemanager E/AndroidRuntime:致命异常:Thread-5230进程:com.amaze.filemanager,PID:4579 java.lang.UnsatisfiedLinkError:找不到布尔值com.amaze.filemanager.scanner的实现.SignatureLib.InitScanner(java.lang.String, java.lang.String) (尝试了 Java_com_amaze_filemanager_scanner_SignatureLib_InitScanner 和 Java_com_amaze_filemanager_scanner_SignatureLib_InitScanner__Ljava_lang_String_2Ljava_lang_String_2) 在 com.amaze.filemanager.scanner.SignatureLib.InitScanner(本机方法) 在 com.amaze.file manager.scanner.SignatureLib。 InitializeScanner(SignatureLib.java:42) 在 com.amaze.filemanager.scanner.Signature.(Signature.java:62) 在 com.amaze.filemanager.ScanForVirusActivity$1.run(ScanForVirusActivity.java:66)

public class SignatureLib {

    static {
        System.loadLibrary("Signature");
    }

    SharedPreferencesUtils spu;
    Context context;

    public SignatureLib(Context context) {
        this.context = context;
    }

    private native boolean InitScanner(String strDBPath, String dbPathTemp);

    private native boolean DeInitScanner();

    private native String checkVirus(String filepath);

    private native boolean UploadFile(String FilePath, String DeviceID, String path);

    private native boolean DownloadFile(String FilePath, String DeviceID, String path);

    private native boolean IsGameApp(String AppName);

    private native boolean SetUpdateInProgressStatus(boolean bStatus);

    public boolean InitializeScanner(String strDBPath) {

        spu = new SharedPreferencesUtils();
        String packageName = context.getPackageName();
        String dbPathTemp = "data/data/" + packageName + "/";

        return InitScanner(strDBPath, dbPathTemp);
    }

}
Run Code Online (Sandbox Code Playgroud)

Gab*_*han 2

是的,需要完整的堆栈跟踪 - 您最初在一个没有意义的地方将其中断。它的意思是你的 .so 文件没有 InitScanner 函数 - 要么你在 C 文件中错误命名它,要么你的签名错误,或者它根本不存在。或者,如果您使用 C++,则忘记了 extern C 函数。