nativescript 是否支持 android 平台中的 .so 文件?

Does nativescript supports .so file in android platform?

最近我们正在使用nativescript 构建一个应用程序,我们需要使用同时提供IOS 和Android SDK 的third-patty 库。 但是即使我们将 .so 文件推送到 lib 文件夹也失败了,错误是库在应用 运行.
期间找不到预期的 .so 文件 所以我想知道 nativescript 是否支持 .so 文件以及如何使其工作? 提前致谢。

目前此任务在 tns CLI 中未自动完成,但应该可以将 *.so 文件复制到 <project>/platforms/android/libs/jni/armeabi-v7a and/or <project>/platforms/android/libs/jni/x86 目录中. Gradle 构建尊重这些文件夹,*.so 文件将包含在 *.apk 包中。

将 .so 文件和 .jar 文件放在一起的更好方法是使用 Android Studio 将它们重新打包为 .aar 文件。然后将包装器 .aar 文件复制到您的 nativescirpt platform/android/libs 文件夹。

以下是将 SDK .jar 和 .so 文件打包成 aar 文件的步骤。

  1. 在 Android Studio 中创建空白 activity 的应用程序。
  2. 创建一个新的包装模块 yoursdkwrapper (New->New Module->Android Library)。
  3. 将您的 SDK .jar 文件复制到 MyApplication\yoursdkwrapper\libs 文件夹。
  4. 在您的 MyApplication\yoursdkwrapper\src\main\ 文件夹下,创建以下目录结构并将 .so 文件复制到每个架构文件夹:jniLibs/arm64-v8a、jniLibs/armeabi、jniLibs/armeabi-v7a , jniLibs/x86.
  5. yoursdkwrapper-debug.aar 文件将在您的 MyApplication\epos2wrapper\build\outputs\aar.
  6. 中生成

Karthik Sankar 的回答的补充。 我的 *.so 文件已复制到应用程序但未被引用。

在这种情况下,您需要像这样手动引用所有这些。 java.lang.System.loadLibrary("avcodec");

检查 *.so 个文件是否被复制使用 Native Libs Monitor 应用程序。

ReLinker 也可能有帮助

详情https://github.com/bytedeco/javacpp-presets/issues/303