如何在Android Studio 3.4中导入第三方二进制库?

时间:2019-07-01 15:45:36

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

背景:

我想在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文件在libs中;同时,我在build.gradle中添加了“ sourceSets {main {jniLibs.srcDirs = ['libs']}}}”;

    〜/ libs /

    〜/ libs / arm64-v8a / libAnalyticsLib.so

    〜/ libs / armeabi / libAnalyticsLib.so

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

1 个答案:

答案 0 :(得分:0)

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

由于我的.jar保存在/ libs中时不起作用,因此我复制了.jar中的所有类并将其粘贴到/ main文件夹中。切记将它们放在您的程序包之外,否则这些类的程序包名称将被更改,这将导致我的问题。导入.so的方式是正确的。只需将.so文件放在/ main / jniLibs中。