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 文件的步骤。
- 在 Android Studio 中创建空白 activity 的应用程序。
- 创建一个新的包装模块 yoursdkwrapper (New->New Module->Android Library)。
- 将您的 SDK .jar 文件复制到 MyApplication\yoursdkwrapper\libs 文件夹。
- 在您的 MyApplication\yoursdkwrapper\src\main\ 文件夹下,创建以下目录结构并将 .so 文件复制到每个架构文件夹:jniLibs/arm64-v8a、jniLibs/armeabi、jniLibs/armeabi-v7a , jniLibs/x86.
- yoursdkwrapper-debug.aar 文件将在您的 MyApplication\epos2wrapper\build\outputs\aar.
中生成
对 Karthik Sankar
的回答的补充。
我的 *.so 文件已复制到应用程序但未被引用。
在这种情况下,您需要像这样手动引用所有这些。
java.lang.System.loadLibrary("avcodec");
检查 *.so
个文件是否被复制使用 Native Libs Monitor
应用程序。
ReLinker
也可能有帮助
最近我们正在使用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 文件的步骤。
- 在 Android Studio 中创建空白 activity 的应用程序。
- 创建一个新的包装模块 yoursdkwrapper (New->New Module->Android Library)。
- 将您的 SDK .jar 文件复制到 MyApplication\yoursdkwrapper\libs 文件夹。
- 在您的 MyApplication\yoursdkwrapper\src\main\ 文件夹下,创建以下目录结构并将 .so 文件复制到每个架构文件夹:jniLibs/arm64-v8a、jniLibs/armeabi、jniLibs/armeabi-v7a , jniLibs/x86.
- yoursdkwrapper-debug.aar 文件将在您的 MyApplication\epos2wrapper\build\outputs\aar. 中生成
对 Karthik Sankar
的回答的补充。
我的 *.so 文件已复制到应用程序但未被引用。
在这种情况下,您需要像这样手动引用所有这些。
java.lang.System.loadLibrary("avcodec");
检查 *.so
个文件是否被复制使用 Native Libs Monitor
应用程序。
ReLinker
也可能有帮助