我有一个程序需要执行lib钠加密。我找到了这个图书馆libsodium
但我认为它需要和ndk一起使用。所以我开始阅读关于ndk的教程,但是我仍然不知道从哪里开始使用这个库。如果有人能给我一个提示或者非常有用的东西,告诉我如何集成这个库,我会很高兴的。
谢谢

最佳答案

要将libnadium集成到Android应用程序中,您需要:
为您的android平台编译的lib钠库
JNI绑定类似于kalium-jni
如果你信任网络上随机的人(你不应该相信!),下载this tarball并将其提取到项目源代码中。否则,请按照下面的说明自行编译。
利钠盐
您需要一个带有android ndk的linux box/vm来编译lib钠共享库,而且似乎需要当前的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

钾JNI
要编译kalium,需要安装SWIG。然后,您需要生成swig c包装器,为您的目标平台编译libkaliumjni本机代码,将其安装到您的应用程序libs/目录中并包含jar。
在kalium jni/jni子目录中,为您的主机创建swig包装器和本地libkaliumjni.so(测试jar时需要它):
./compile.sh

然后,修改jni/Android.mk并将/installs/替换为编译libnadium的任何位置,并将$(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和sources jar,您可以将它们添加到eclipse中以获取引用。

07-27 23:43