使用已编译的C文件为Android创建一个nativescript插件

时间:2018-10-02 13:04:31

标签: android plugins nativescript

我正在按照官方文档here

创建一个nativescript插件

我创建了.aar文件并将其复制到platforms/android文件夹中,当我调用插件类时该文件夹将起作用。我面临的问题是当我尝试调用加载本机库的函数时,给了我UnsatisfiedLinkError

我已经看过这些链接1 2并尝试了所有提到的选项,但是它们似乎都不起作用。由于这些链接已经使用了两年,所以我想知道现在是否不赞成使用这些方法。

我的tns版本是4.1.2,tns-android是4.1.3。

我尝试将* .so文件添加到以下文件夹:

platforms/android
platforms/android/libs
platforms/android/libs/armeabi
platforms/android/libs/jni
platforms/android/libs/jni/armeabi
platforms/android/armeabi
platforms/android/jni
platforms/android/jni/armeabi
platforms/android/jniLibs
platforms/android/jniLibs/armeabi

如您所见,我已经根据以前的帖子尝试了所有可能的组合(我的* .so文件用于armeabi体系结构)

请注意,唯一不会失败的案例是platforms/android/jniLibs/armeabi。尝试此操作时,我收到一条错误消息,告诉我在调用tns debug android时一个.so文件被重复(合并冲突),而另一个在我调用函数时在运行时失败

1 个答案:

答案 0 :(得分:0)

我相信链接器错误完全来自您的本机库。您的从插件到本地Java类的调用在这里成功了,从Java到C似乎是问题所在。

您是否验证了本机库(.so文件)是否已成功编译,可能是通过将其导入一个简单的Android应用程序来完成的?如果仍然失败,则与{N}运行时无关,但可能与NDK编译有关。