8

我有一个需要执行 libsodium 加密的程序。我找到了这个库libsodium ,但我认为它需要与 NDK 一起使用。所以我开始阅读有关 NDK 的教程,但我仍然不知道从哪里开始使用这个库。如果有人能给出一个提示或非常有用的东西来给出如何集成这个库的想法,我会很高兴的。

谢谢

4

1 回答 1

13

要将 libsodium 集成到您的 Android 应用程序中,您需要:

如果您信任 Internet 上的随机人(您不应该这样做!),请下载此 tarball并将其解压缩到您的项目源中。否则,请按照以下说明自行编译。

库钠

您需要一个带有 Android NDK 的 Linux 机器/VM 来编译 libsodium 共享库,并且您似乎需要当前的 git master 分支来使用 NDK 编译它。签出后,为 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

钾钾

要编译 kalium,您需要安装SWIG。然后,您需要生成 SWIG C 包装器,为您的目标平台编译 libkaliumjni 本机代码,将其安装到您的应用程序 libs/ 目录并包含 JAR。

在 kalium-jni/jni 子目录中,为您的主机创建 SWIG 包装器和本机 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 中以获取参考。

于 2015-02-20T11:25:15.057 回答