【问题标题】:How to import 3rd party binary library in Android Studio 3.4?如何在 Android Studio 3.4 中导入第三方二进制库?
【发布时间】:2019-11-12 06:47:43
【问题描述】:

背景:

我想在 Android Studio 3.4 中使用第三方库。该库包括三个文件:see pics

  • arm64-v8a/libAnalyticsLib.so
  • armeabi-v7a/libAnalyticsLib.so
  • StrideAnalyticsLib.jar.

“StrideAnalyticsLib.jar”中的类文件显示它们似乎是使用 SWIG 生成的。

我尝试了两种方法来导入这个库,但仍然不能

  • 导入 StrideAnalyticsLib.*;

    但这不允许访问类并显示“不能 解析符号...”。

  • .so 文件与 jniLibs 一起使用

    ~/main/jniLibs/

    ~/main/jniLibs/arm64-v8a/libAnalyticsLib.so

    ~/main/jniLibs/armeabi/libAnalyticsLib.so

  • .so 文件在库中;同时,我在 build.gradle 中添加了“sourceSets { main{ jniLibs.srcDirs = ['libs']}}”;

    ~/libs/

    ~/libs/arm64-v8a/libAnalyticsLib.so

    ~/libs/armeabi/libAnalyticsLib.so

两次尝试之后都是清理和重建项目。我对 Android 非常陌生,无法让它工作。有人可以提供帮助吗?非常感谢!

【问题讨论】:

    标签: android-studio jar android-ndk android-gradle-plugin .so


    【解决方案1】:

    在研究了使用 SWIG 将 c/c++ 库包装到 .jar 和 .so 中的过程后,我意识到 .jar 和 .so 将具有相同的包名,以便 .jar 可以调用 .so 文件.

    因为我的 .jar 在保存在 /libs 时不起作用,所以我复制了 .jar 中的所有类并将它们粘贴到 /main 文件夹中。记得把它们放在你的包之外,否则这些类的包名会被改变,这会导致我的问题。 .so 的导入方式是正确的。只需将 .so 文件放在 /main/jniLibs 中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 2015-01-03
      相关资源
      最近更新 更多