我有一个程序需要执行libsodium加密.我发现这个库
libsodium
但我认为它需要与NDK一起使用.所以我开始阅读有关NDK的教程,但我仍然不知道从哪里开始使用这个库.如果有人可以提供一些暗示或非常有用的东西来介绍如何整合这个库,我会很高兴.
但我认为它需要与NDK一起使用.所以我开始阅读有关NDK的教程,但我仍然不知道从哪里开始使用这个库.如果有人可以提供一些暗示或非常有用的东西来介绍如何整合这个库,我会很高兴.
谢谢
解决方法
要将libsodium集成到您的Android应用程序中,您需要:
>为您的Android平台编译的libsodium库
>像J000一样的JNI绑定
如果您信任互联网上的随机用户(您不应该这样做!),请下载this tarball并将其解压缩到您的项目源中.否则,请按照以下说明自行编译.
libsodium
你需要一个带有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
钾,JNI
要编译kalium,您需要安装SWIG.然后,您需要生成SWIG C包装器,为您的目标平台编译libkaliumjni本机代码,将其安装到您的app 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中以获取引用.