【问题标题】:How do you add an existing .so library to an Android Studio project?如何将现有的 .so 库添加到 Android Studio 项目?
【发布时间】:2015-12-30 00:11:38
【问题描述】:

有几个消息来源说您应该在 src/main/ 中创建一个名为 jniLibs/armeabi 的目录,并将您编译的 .so 文件添加到该位置。然后使用 System.loadLibrary("nameOflib") 加载您的库。

我的问题是当我定义我的函数时

public native long create();

create() 给出错误:

无法解析对应的 JNI 函数 Java_com_brendan_myApplication_MainActivity_create。 报告项目中未找到对应 JNI 函数的 Java 中的本机方法声明。

有什么想法吗?

【问题讨论】:

  • 您使用的是哪个版本的 Android Studio 和哪个 gradle 插件?
  • Android Studio 1.5.1,gradle 2.8
  • 这是gradle-experimental吗?
  • 不确定,它是最新版本之一。我可以试试旧版本看看是否有区别。
  • 是的,build.gradle 文件语法有很大不同。如果您有apply plugin: 'com.android.application',那么piotrek1543instructions 正是您所需要的。但不要指望 Android Studio 会神奇地将本机方法声明解析为预构建库。

标签: android android-studio android-ndk java-native-interface


【解决方案1】:

结果我仍然可以调用 jni 方法,即使出现错误提示 “无法解析对应的JNI函数”。

【讨论】:

    【解决方案2】:

    要解决该问题,只需按照以下步骤操作并访问以下链接:

    在 Android Studio 1.0.2 中添加 .so 库

    1. 在“src/main/”中创建文件夹“jniLibs”
    2. 将所有 .so 库放入“src/main/jniLibs”文件夹中
    3. 文件夹结构如下,
      |--app:
      |--|--src:
      |--|--|--main
      |--|--| --|--jniLibs
      |--|--|--|--|--armeabi
      |--|--|--|--|--|--.so 文件
    4. 无需额外的代码,只需同步您的项目并运行您的应用程序。

      参考
      https://github.com/commonsguy/sqlcipher-gradle/tree/master/src/main

    发件人:How to include *.so library in Android Studio?

    编辑:我想这可能不是配置问题,而是你如何在 Android NDK 中声明本机方法签名

    查看此链接:What is the correct way to write native method signatures in Android NDK?

    希望对你有帮助

    【讨论】:

    • 这就是我正在做的,我得到了我上面描述的错误。
    • 请查看“如何包含...”下方的链接,还有更多答案
    • 我尝试了这些解决方案,但没有成功。
    • 我觉得你说得对。我相信我的库加载正确。我使用 Eclipse 与 jni 合作没有问题,所以我想知道为什么我的声明很顽固。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多