android找不到相应的jni函数

时间:2015-11-06 12:12:14

标签: android android-ndk java-native-interface

我已关注here,我已将.so文件添加到我的android项目中。加载库并运行项目。

现在我想使用库的一个功能。我在MainActivity

中尝试过这样的做法
public final static native int crypto_aead_chacha20poly1305_encrypt(byte[] jarg1, int[] jarg2, byte[] jarg3, int jarg4, byte[] jarg5, int jarg6, byte[] jarg7, byte[] jarg8, byte[] jarg9);

Android让我找不到相应的JNI功能。

so文件位于正确的架构图中的jniLibs中。

这是否与我的packagename有关,他试图在我的包中找到它而不是在so库中?

当我跑步时,我得到:

java.lang.UnsatisfiedLinkError: No implementation found for int be.example.libtest.MainActivity.crypto_aead_chacha20poly1305_encrypt(byte[], int[], byte[], int, byte[], int, byte[], byte[], byte[]) (tried Java_be_example_libtest_MainActivity_crypto_1aead_1chacha20poly1305_1encrypt and Java_be_example_libtest_MainActivity_crypto_1aead_1chacha20poly1305_1encrypt___3B_3I_3BI_3BI_3B_3B_3B)

2 个答案:

答案 0 :(得分:1)

我看到 Robosodium 使用 Swig 来生成包装器。在这种情况下,还应该在Let short int x = 1 (0x0001) then ~x = 65534 (0xFFFE) ~x + 1 = 65534 + 1 (0xFFFF) ~(~x+1) = 0 (0x0000) ~(~x+1) + 1 = 0 + 1 (0x0001) 中自动生成一些需要添加到项目中的Java文件。应使用该类中提供的方法进行所有本机调用。

答案 1 :(得分:-1)

创建名称为" armeabi"的文件夹和" armeabi-v7a"在项目的libs文件夹中放置" .so"将文件存入两个文件夹并清理项目并运行它。