【问题标题】:Including a dependency in Android Studio gives UnsatisfiedLinkError在 Android Studio 中包含依赖项会产生 UnsatisfiedLinkError
【发布时间】:2017-05-31 10:28:36
【问题描述】:

我对 Android 编程相当陌生,我正在尝试将 libsodium-jni 库用于一些基本的 Crypto 任务。在 Android Studio 中,我将 libsodium-jni-aar 添加为库依赖项,我可以看到这通过添加以下内容修改了我的 build.gradle 文件:

compile 'com.github.joshjdevl.libsodiumjni:libsodium-jni-aar:1.0.6'

这个库中的许多函数都可以正常工作,但是当我使用 Sodium.sodium_init() 函数时,我得到了

java.lang.UnsatisfiedLinkError: No implementation found for int org.libsodium.jni.SodiumJNI.sodium_init() (tried Java_org_libsodium_jni_SodiumJNI_sodium_1init and Java_org_libsodium_jni_SodiumJNI_sodium_1init__)
                                                                    at org.libsodium.jni.SodiumJNI.sodium_init(Native Method)

我猜想这是由于 sodium_init 是一个本机函数,并且由于某种原因,gradle 没有将实现安装到手机(或模拟器)上。

任何帮助将不胜感激。

【问题讨论】:

    标签: android gradle android-gradle-plugin libsodium


    【解决方案1】:

    要导入 Sonatype 存储库,您需要添加它

    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    

    到您的项目 build.gradle 文件中的 allprojects 对象中,这应该会导致类似于以下内容:

    allprojects {
        repositories {
            jcenter()
            maven {
                url 'https://oss.sonatype.org/content/repositories/snapshots/'
            }
        }   
    }
    

    然后你可以在你的 app build.gradle 文件中添加你的编译语句

    compile 'com.github.joshjdevl.libsodiumjni:libsodium-jni-aar:1.0.7-SNAPSHOT'
    

    【讨论】:

    • 感谢您的回复。我已经添加了这些并且发生了同样的错误。我可以知道正在添加库,因为我可以安全地调用库中的某些函数而不会出现问题。只有当我调用 Sodium 函数时才会出现问题。
    • 嗯,我真的不知道图书馆,但似乎that you are not the only one with problems。这肯定是一个错误
    • 是的,我看到了。作为一个相对初学者,它总是很容易假设问题出在您而不是图书馆/环境!好的,我想我将不得不考虑一种解决方法。再次感谢。
    • 是的,您现在有 2 个选项。 1)更改库 2)在 github 上 fork 库,看看你是否可以自己修复它。祝你好运:)
    猜你喜欢
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2014-02-05
    • 2015-09-23
    • 2019-04-16
    • 2018-01-26
    相关资源
    最近更新 更多