【问题标题】:android eclipse jedisct1/libsodium where to startandroid eclipse jedisct1/libsodium 从哪里开始
【发布时间】:2014-11-11 02:22:56
【问题描述】:

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

谢谢

【问题讨论】:

    标签: android eclipse android-ndk libsodium


    【解决方案1】:

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

    • 为您的 Android 平台编译的 libsodium 库
    • kalium-jni这样的JNI绑定

    如果您信任 Internet 上的随机人(您不应该这样做!),请下载 this 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
    

    钾-jni

    要编译 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 中以获取参考。

    【讨论】:

    • 不会选择您的 armv7 钠构建,armv5 将用于 armv5 和 armv7 构建。为了改变它,你应该将libsodium-android-arm重命名为libsodium-android-armeabi,并在jni/Android.mk中将TARGET_ARCH更改为TARGET_ARCH_ABI。此外,您可以轻松地将 x86 添加到支持的平台列表中:./dist-build/android-x86.sh && ln -s libsodium-android-i686 libsodium-android-x86ndk-build APP_ABI=armeabi,armeabi-v7a,x86
    • 感谢@ph0b,我已经更新了说明并添加了一个带有 x86 .so 的新 tarball,并且(希望)修复了 arm7 构建
    • 我按照 libsodium 的说明进行操作。现在运行 do_the_job.sh 脚本后,我最终得到了 .so 文件。我现在如何获取 .jar?因为现在我不知道如何使用该库。
    • 它现在作为 AAR 发布:github.com/GerardSoleCa/Robosodium/releases
    • @ge0rg 你知道如何用 libsodium 1.0.12 构建 libsodiumjni.so 吗?
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多