我有一个程序需要执行 libsodium 加密。我找到了这个图书馆 libsodium 但我认为它需要与 NDK 一起使用。所以我开始阅读有关 NDK 的教程,但我仍然不知道从哪里开始使用这个库。如果有人可以提供提示或非常有用的东西来提供有关如何集成此库的想法,我将非常高兴。
谢谢
最佳答案
要将 libsodium 集成到您的 Android 应用中,您需要:
- 为您的 Android 平台编译的 libsodium 库
- JNI 绑定(bind),如 kalium-jni
如果您信任 Internet 上的随机人员(您不应该信任!),请下载 this tarball并将其提取到您的项目源中。否则,请按照以下说明自行编译。
钠盐
您需要一个带有 Android NDK 的 Linux box/VM 来编译 libsodium 共享库,而且您似乎需要当前的 git master 分支来使用 NDK 编译它。 checkout 后,为 ARM、ARMv7 和 x86 编译 Android 库代码:
./autogen.sh
./dist-build/android-arm.sh # for older ARMv6 devices
./dist-build/android-armv7-a.sh # for the more recent ARMv7 devices
./dist-build/android-x86.sh # for the emulator / x86 devices
# Provide the directory names nkd-build expects
ln -s libsodium-android-armv6 libsodium-android-armeabi
ln -s libsodium-android-armv7-a libsodium-android-armeabi-v7a
ln -s libsodium-android-i686 libsodium-android-x86
钾-jni
要编译 kalium,您需要 SWIG安装。然后,您需要生成 SWIG C 包装器,为您的目标平台编译 libkaliumjni native 代码,将其安装到您的应用程序 libs/目录并包含 JAR。
在 kalium-jni/jni 子目录中,为您的主机创建 SWIG 包装器和 native libkaliumjni.so(测试 JAR 需要它):
./compile.sh
然后,修改jni/Android.mk
并将/installs/
替换为您编译libsodium 的位置,将$(TARGET_ARCH)
替换为$(TARGET_ARCH_ABI)
然后在kalium-jni目录下运行:
ndk-build APP_ABI=armeabi,armeabi-v7a,x86
[...]
[x86] Install : libkaliumjni.so => libs/x86/libkaliumjni.so
[armeabi] Install : libkaliumjni.so => libs/armeabi/libkaliumjni.so
[armeabi-v7a] Install : libkaliumjni.so => libs/armeabi-v7a/libkaliumjni.so
现在 libs/
目录包含本地 kalium 库。将其复制到您的 Android 项目中。
最后,您需要编译 kalium JAR:
mvn clean install
它应该在 ~/.m2/repository/org/abstractj/kalium/kalium-jni/1.0.0-SNAPSHOT/kalium-jni-1.0.0-SNAPSHOT.jar
中结束。也将其复制到您的 libs
目录。它附带 javadoc 和源代码 JAR,您可以将其添加到 Eclipse 中以获取引用。
关于android eclipse jedisct1/libsodium 从哪里开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856443/