android-studio - 如何在 Android Studio 3.4 中导入第三方二进制库?
问题描述
背景:
我想在 Android Studio 3.4 中使用第三方库。该库包括三个文件:见图片
- 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/arm64-v8a/libAnalyticsLib.so
~/libs/armeabi/libAnalyticsLib.so
两次尝试之后都是清理和重建项目。我对 Android 非常陌生,无法让它工作。有人可以提供帮助吗?十分感谢!
解决方案
在研究了使用 SWIG 将 c/c++ 库包装到 .jar 和 .so 中的过程之后,我意识到 .jar 和 .so 将具有相同的包名,以便 .jar 可以调用 .so 文件。
因为我的 .jar 在保存在 /libs 时不起作用,所以我复制了 .jar 中的所有类并将它们粘贴到 /main 文件夹中。记得把它们放在你的包之外,否则这些类的包名会被改变,这会导致我的问题。.so 的导入方式是正确的。只需将 .so 文件放在 /main/jniLibs 中即可。
推荐阅读
- loopback - Loopback 4:查询关系模型
- java - Android 使用 recyclerview、cardview 和 volley 加载完整图像
- lean - 从终端运行精益的自动证明检查程序
- chart.js - 如何摆脱chartjs工具提示中的白色方形轮廓或边框?
- c# - ASP.NET MVC 应用程序,HTML 视频不起作用
- python - 创建一个链表函数而不创建另一个类
- java - 找到单词后如何从循环中中断
- python - 我该如何解决这个问题?追溯:文件“C:/Users/rawaa/PycharmProjects/huffman/deempade.py”,第 56 行,seed=pickle.load(fp) EOFError
- javascript - 如何通过对象名称动态检索对象属性?
- c++ - Clang-Format:多行语句后在换行符上打开大括号