如何在Android JNI中链接加密共享库

如何在Android JNI中链接加密共享库,android,android-ndk,cryptography,java-native-interface,shared,Android,Android Ndk,Cryptography,Java Native Interface,Shared,我正在写一个包装器来使用一些加密函数。 我用Android NDK构建加密库。现在我有了libcrypto.so,我需要它,但我不知道如何将它与我的包装器链接 我的项目树是这样的 (proj root) | |->(src) |->(src)-> com.package |->(src)-> com.package->NativeCipher.java | |->(jni) |->(jni)->Android.mk |->(jni)-&

我正在写一个包装器来使用一些加密函数。 我用Android NDK构建加密库。现在我有了libcrypto.so,我需要它,但我不知道如何将它与我的包装器链接

我的项目树是这样的

(proj root)
|
|->(src)
|->(src)-> com.package
|->(src)-> com.package->NativeCipher.java
|
|->(jni)
|->(jni)->Android.mk
|->(jni)->NativeCipher.c
NativeCipher.java

public class NativeCipher {
    static {
         System.loadLibrary("crypto");
         System.loadLibrary("NativeCipher");
     }

     public static native byte[] AESEncrypt(byte[] in, byte[] key);
}
NativeCipher.c

#include <string.h>
#include <jni.h>
#include <aes.h>

jbyteArray Java_com_package_NativeCipher_AESEncrypt(JNIEnv* env, jobject this, jbyteArray in, jbyteArray key)
{
    // All my code here
}
我需要使用crypto提供的include函数。 但是,我不知道如何处理NDK生成的.so文件以及如何生成Android.mk文件


提前感谢,我尽量做到具体。

本机库转到Android项目的libs/armeabi或libs/armeabi-v7a。不过,您可能需要重命名OpenSSL库,因为系统已经有libcrypto.so。至于您自己的JNI包装器,只需从NDK中获取共享库示例并修改以使用您自己的文件

到底是什么问题?您能够生成.so文件吗?你在尝试使用它们时会出错吗?我不知道我必须把libcrypto.so放在哪里,以及如何编写我的NativeCipher文件java和.c的Android.mk来构建它们。对不起,我对这类事情不熟悉。谢谢你的快速回复,我在哪里可以找到NDK样品?我只需要复制并粘贴libcrypto.so到另一个名称构建的libs/armeabi,我可以包括?NDK包括许多示例项目,请熟悉这些项目。至少有一个向您展示了如何合并共享库,并将其用作您自己项目的起点。